IE中的jQuery AJAX请求失败

时间:2009-01-08 20:47:51

标签: json internet-explorer jquery

以下AJAX调用在IE中失败。

$.ajax({
    url:"{{SITE_URL}}/content/twitter.json",
    dataType:"json",
    error:function(xhr, status, errorThrown) {
        alert(errorThrown+'\n'+status+'\n'+xhr.statusText);
    },
    success:function(json) {
               ...Snip...
    }
});

错误函数返回

Undefined
parsererror
OK

没有请求服务器,因此我认为它不是JSON的问题。

已修复,请参阅#1351389

8 个答案:

答案 0 :(得分:51)

已修复,我将内容类型从application/json; charset=utf8更改为普通application/json 我讨厌IE:)

另外要避免IE超级缓存试试这个:

var d = new Date();
$.ajax({
        url:"{{SITE_URL}}/content/twitter.json?_="+d.getTime(), 
...Snip...

这样每个请求都是IE获取的新URL:D

答案 1 :(得分:48)

对于缓存问题,为什么不简单地使用cache: false参数?

$.ajax({ 
    url: "yoururl",
    cache: false,
    ....

答案 2 :(得分:8)

这是复制/粘贴吗?让我一直得到的一件事就是在对象构造函数中留下最后一个','。也就是说,大多数浏览器都接受JS:

o = { a:1, b:2, c:3, };

但IE会因为最后一项之后的逗号而窒息。将其更改为:

o = { a:1, b:2, c:3 };

它有效。

答案 3 :(得分:6)

在较新版本的Internet Explorer(IE7)中,必须在调用 $。ajax 之前编写下一行,否则它将永远不会调用该函数:

$.ajaxSetup({ cache: false }); //this line before $.ajax!!!
$.ajax({
    //codes
    //codes
    //codes
});

答案 4 :(得分:3)

IE非常积极地缓存AJAX请求(无论如何都比Firefox更强)。如果这不适合您的站点,则需要在响应中适当设置Cache-Control标头。

答案 5 :(得分:2)

静态生成的JSON和IE的一个主要问题是领先的“逗号”,例如这会在IE中引发错误:

{
    "one":"hello",
    "two":"hi",
 }

请注意最后一个逗号。

答案 6 :(得分:0)

{{SITE_URL}} chunk给出的是什么。尝试查看浏览器的视图源代码中的代码。如果{{SITE _URL}}块有一个尾部斜杠,那将会产生请求url:

http://modomain.com//content/twitter.json

哪个可以让IE出来?

答案 7 :(得分:0)

IE:JSON未定义错误已解决

http://funkatron.com/site/comments/safely-parsing-json-in-javascript/

使用dataType:“json”并避免解析