2011-01-14 156 views
5

我有一个问题,猜是什么,IE8。下面的代码,为了清楚而简化,并不在所有的工作:Jquery .get()不能在Internet Explorer中工作

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()回调。我收到了“之前”和“之后”的警报,但没有收到警报,实际上什么都没有发生,请求也没有发送。我真的不知道该怎么想。

如FF中所确认的,响应标头为“Content-Type:application/xml; charset:iso-8859-1”。

编辑:$ .post()也不起作用。

+0

你能提供完整的函数调用,而不是错过了一些位?您目前的代码不适用于任何浏览器。 – lonesomeday 2011-01-14 16:08:51

+0

这个确切的代码适用于每个浏览器保存IE8。 “getActivityUrl(...)”返回一个有效的URL。 – Alessandro 2011-01-17 09:06:01

回答

0
$J.get(getActivityURL('ActionName' 

// End $.get() 

这是正确的吗?我的意思是$ J ...你使用多个JS框架还是其他?

+0

然后它会在每个浏览器中抛出错误。 – rahul 2011-01-14 16:03:22

+0

是的,忘了提及,它在整个应用程序中是正确的“无冲突”。无论如何,我只是编辑了这个问题。 – Alessandro 2011-01-14 16:03:47

0

具有u尝试:

$.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

+0

和以前一样,没有变化(我还包括类型:'GET')。它仍然适用于所有其他浏览器,但不会影响IE – Alessandro 2011-01-14 16:16:13

+0

它在ie6和7中可以工作吗?或不在所有的IE浏览器? – 2011-01-14 16:17:16

1

我不确定是否是问题,但尝试去除 ”;”在{缓存:假}

IE不喜欢任何额外的东西{},例如 {A:A,B:B,C:C,}将在FF工作,但不是在IE

1

我认为在IE中存在缓存问题。

因此,在像"&mathRandom="+Math.random(); 末尾添加Math.random(),多了一个参数,因为IE浏览器将识别为前一个相同的请求,那么它将给从缓存中,而不是射击请求数据。

13

IE对缓存声名狼借。所以你需要确保你没有得到一个缓存的结果。

通过在ajaxStart方法中将缓存属性值设置为false,可以全局禁用缓存。

$.ajaxSetup({ 
    cache: false 
}); 

,或者如果你想消除在特定Ajax调用缓存的结果,附加一个唯一编号的网址的结尾。您可以使用$.now()方法来获得一个唯一的编号

$.get("someurl.php?" + $.now() ,function(result) { 
    // do something with result 
}); 

$.now()方法返回一个代表当前时间的数量。

相关问题