IE中失败的jQuery AJAX请求
以下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
固定,我改变了application/json; charset=utf8
的内容typesapplication/json; charset=utf8
application/json; charset=utf8
只是简单的application/json
。
我讨厌IE浏览器:)
也要避免IE超级caching试试这个:
var d = new Date(); $.ajax({ url:"{{SITE_URL}}/content/twitter.json?_="+d.getTime(), ...Snip...
这样每个请求是一个新的IE浏览器的url得到:D
对于caching问题,为什么不简单地使用cache: false
参数?
$.ajax({ url: "yoururl", cache: false, ....
这是复制/粘贴? 让我一直都在的东西是把最后一个“,”留在对象构造函数中。 也就是说,大多数浏览器JS接受:
o = { a:1, b:2, c:3, };
但IE扼杀了这个,因为最后一个项目后的逗号。 将其更改为:
o = { a:1, b:2, c:3 };
它的工作。
在较新版本的Internet Explorer(IE7)中,需要在调用$ .ajax之前写入下一行,否则将永远不会调用该函数:
$.ajaxSetup({ cache: false }); //this line before $.ajax!!! $.ajax({ //codes //codes //codes });
IE真正积极地cachingAJAX请求(反正比Firefox更重要)。 如果这不适合您的站点,则需要在响应中正确设置Cache-Control标头。
静态生成的JSON和IE的一个主要问题是领先的“逗号”,例如在IE中引发错误:
{ "one":"hello", "two":"hi", }
注意最后一个逗号。
什么是{{SITE_URL}}块是关于。 尝试查看浏览器的查看源代码中的代码。 如果{{SITE _URL}}块有一个结尾的斜杠,并且会使请求url:
http://modomain.com//content/twitter.json
哪个可以蠕变IE浏览器?
IE:JSON未定义错误解决在
http://funkatron.com/site/comments/safely-parsing-json-in-javascript/
通过使用dataType:“json”并避免parsing