function createDataFile()
{
//根据DOWN+14位随机数生成下载Id
var downFileId="DOWN"+RndNum(14);
downloadFileId = downFileId;
createFilePars += "&downFileId="+downloadFileId;
jQuery.ajax({type:"get", cache:false, dataType:"json", contentType:"application/x-www-form-urlencoded:charset=UTF-8",
data: createFilePars, url:"<%=webpath%>/com.linkage.bi.powershow.util.QueryLogicUtil.createFilterDataFile.db(portal).invoke",
success:function (data)
{
//生成完成后 将createFileComplete设为true
createFileComplete = true;
//生成完成后将data参数赋给全局objData 防止生成文件在转离线前生成
objData=data;
//isOffline如没有离线操作 正常显示 否则不做处理
if(!isOffline)
{
finishCreate(data);
}
}
});
}
在IE8下可以正常执行,在IE6、IE7下有时候可以、有时候不可以,想来想去以为jQuery.ajax不支持IE6版本有问题,苦恼!
后来静下心来想了各种可能,最后确定可能和传递的参数长度有关系,经过验证果然。主要还是在于get和post方式在传递参数的长度方面存在区别,修改如下:
function createDataFile()
{
//根据DOWN+14位随机数生成下载Id
var downFileId="DOWN"+RndNum(14);
downloadFileId = downFileId;
createFilePars += "&downFileId="+downloadFileId;
jQuery.ajax({type:"post", cache:false, dataType:"json",
//contentType:"application/x-www-form-urlencoded:charset=UTF-8",
data: createFilePars, url:"<%=webpath%>/com.linkage.bi.powershow.util.QueryLogicUtil.createFilterDataFile.db(portal).invoke",
beforeSend:function(xhr, settings)
{
// 如果是postData方式传参,则需要设置请求参数
xhr.setRequestHeader("ajax-encoding", "YES");
},
success:function (data)
{
//生成完成后 将createFileComplete设为true
createFileComplete = true;
//生成完成后将data参数赋给全局objData 防止生成文件在转离线前生成
objData=data;
//isOffline如没有离线操作 正常显示 否则不做处理
if(!isOffline)
{
finishCreate(data);
}
}
});
}