getJSON或AJAX请求不使用IE9

Mik*_*keJ 8 ajax jquery getjson internet-explorer-9

我一直试图解决这个问题几个小时(在这里也搜索但没有解决方案有效)所以我别无选择,只希望有人告诉我为什么会这样,我该如何解决它.

这是一个简单的代码,适用于Firefox但不适用于IE9(没有其他版本)

示例代码在这里:

http://jsfiddle.net/z5b2J/

来源就是这个:

$.ajax({
  url: "http://query.yahooapis.com/v1/public/yql?q=select%20script%20from%20html%20where%20url%3D%27https%3A%2F%2Ftesting.website.com%2F%3Fcid%3D48hgfd45430DD%26id%3D4830F8CF0454312%27&format=json&diagnostics=true&_maxage=86400",
  success: function(){
   alert('hi');
  }
});
Run Code Online (Sandbox Code Playgroud)

该网站不需要是真实的测试目的.

正如您在Firefox下的小提琴中看到的那样,警告框出现"hi"但是如果您在IE9中运行完全相同的代码,则不会出现警告框.

使用getJSON方法会出现同样的情况,这对我来说是一个问题,因为我想运行一些代码而不是警报,但它不会在IE9中运行.

cit*_*onn 12

你尝试过使用 getJSON()而不是ajax吗?这是一个跨域请求,你正在获取json,这可能是问题所在.

它现在在两个浏览器中都有效:

$.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20script%20from%20html%20where%20url%3D%27https%3A%2F%2Ftesting.website.com%2F%3Fcid%3D48hgfd45430DD%26id%3D4830F8CF0454312%27&format=json&diagnostics=true&_maxage=86400&callback=?",function(){
   alert('hi');
});
Run Code Online (Sandbox Code Playgroud)

  • (记住你必须在URL中添加"&callback =?"参数...这是一种方法,或者你可以在$ ajax调用中指定'jsonp'作为数据类型. (8认同)

小智 6

IE9的问题取决于高级缓存管理.

如果你清空IE的缓存并重新运行ajax请求:第一次就可以了.

要解决此问题,您必须发送带有"noStore = true"和"Duration = 0"或等效的HTTP响应.

这是MVC中的一个例子.