我遇到了问题,猜猜看,IE8。为简洁起见,以下代码完全不起作用:
alert('before get');
$.get(getActivityURL('ActionName',{
ts: new Date().getTime(), ...other params...}),
{cache:false;},
function (xml) {
alert("in get callback");
},'xml'); // End $.get()
alert('in after get');
getActivityUrl()输出带有请求参数的有效URL。
这在FF和Chrome中正常运行。但是,在IE8中,这甚至没有进入$ .get()回调。我得到“之前”和“之后”警报,但没有“进入”警报,事实上,没有任何反应,请求也没有发送。我真的不知道在这里想些什么。
响应标题是“内容类型:application / xml; charset:iso-8859-1”,在FF中已经确认。
编辑:$ .post()也不起作用。
答案 0 :(得分:12)
IE因缓存而臭名昭着。因此,您需要确保没有获得缓存结果。
您可以通过在ajaxStart
方法中将缓存属性值设置为false来全局禁用缓存。
$.ajaxSetup({
cache: false
});
或者如果要在特定的ajax调用中消除缓存的结果,请在URL的末尾附加一个唯一的数字。您可以使用$.now()
方法获取唯一编号
$.get("someurl.php?" + $.now() ,function(result) {
// do something with result
});
$.now()
方法返回一个代表当前时间的数字。
答案 1 :(得分:1)
我不确定这是否有问题,但请尝试删除“;”在{cache:false}
IE不喜欢{}中的任何其他内容,例如 {a:a,b:b,c:c,}将在FF中工作,但不在IE中工作
答案 2 :(得分:1)
我认为IE中存在缓存问题。
所以添加Math.random()
,最后再添加一个参数,例如"&mathRandom="+Math.random();
因为IE将识别与前一个请求相同的请求,因此它将从缓存而不是触发请求中提供数据。
答案 3 :(得分:0)
$J.get(getActivityURL('ActionName'
// End $.get()
这是对的吗?我的意思是$ J ......您使用的是多个JS框架还是什么?
答案 4 :(得分:0)
你试过了吗?
$.ajax({
url: getActivityURL('ActionName',{ts: new Date().getTime(), ...other params...}),
data: data,
success: function (xml) {
alert("in get callback");
},
dataType: 'xml'
});
只是一个猜测
编辑:
我找到了一个可能对你有帮助的有趣线程,请查看: