jQuery跨域Ajax JSONP调用因某些IE版本中的未知原因而随机失败

我正在使用最新版本的jQuery 1.7.1进行跨域Ajax调用.使用
JSONP响应.

我已经对它进行了广泛的测试:
在Win XP和Win 7上的Safari,Chrome,Opera,Firefox,IE6 IE7 IE8 IE9(兼容模式而不是),所有这些都能完美运行.永远不会失败多次测试.所有这些都使用启用了JavaScript和Cookie的标准默认设置.

在制作中,这个电话很少会失败,但我已经有数百个用户中的几个用户.可能是50或100中的一个.我无法理解这一点,因为在所有情况下:

>用户没有使用jQuery进行非跨域ajax调用的问题. (即非跨域调用有效,因此必须启用JavaScript并支持ajax).
>用户只有使用jQuery进行跨域ajax调用时遇到问题.即使经过多次尝试.即用户要么遇到问题,要么不会失败然后工作或工作失败.只有一个或另一个.
>以下是受影响的用户的用户代理字符串示例:

Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; Trident / 5.0; FunWebProducts)

Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; GTB7.2; .NET CLR 2.0.50727; .NET CLR 3.5.30729)

Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CPNTDF; ibrytetoolbar_playbryte ; .NET4.0C)

它似乎只影响IE,我从来没有遇到过其他浏览器的问题.

>如果他们使用不同的浏览器问题就会消失,我告诉他们安装Chrome.
>问题不能是连接,计算机或基于更改浏览器的操作系统.

我只能排除它必须是只能在IE上找到的设置.有人有这个问题吗?有没有人知道哪个IE设置可能阻止使用JSONP响应的跨域Ajax调用.

它不能是通常的AJAX / JSONP /跨域问题,因为当浏览器设置为默认值时这些问题不会发生,并且因为我已经以正确的方式完成了它:
*结束时间戳字符串以停止超级缓存
* JSONP响应
等等

我可以确认这个电话根本没有开通.

最佳答案 这个问题最近一直困扰着我.我的研究表明,jQuery ajax调用是由IE缓存的,因此IE决定它不需要获取可以解释为什么没有发生的数据.这些SO问题有助于
Stop jquery load response from being cached
getjson returning cached data in IE8

似乎禁用缓存的额外显式ajax设置帮助IE获取消息.当json是数据类型时,jQuery中的所有ajax调用都应该避免缓存,但我不相信它是有效的.这是在我的getJSON()或ajax()调用之前插入的似乎对我有用的代码.

$.ajaxSetup({cache:false});

点赞