以下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
答案 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”并避免解析