Jquery .get()无法在Internet Explorer中运行

时间:2011-01-14 15:58:22

标签: ajax internet-explorer jquery internet-explorer-8

我遇到了问题,猜猜看,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()也不起作用。

5 个答案:

答案 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'
});

只是一个猜测

编辑:

我找到了一个可能对你有帮助的有趣线程,请查看:

jQuery issue in Internet Explorer 8