gpt4 book ai didi

jQuery跨域Ajax JSONP调用在某些IE版本中随机失败,原因不明

转载 作者:行者123 更新时间:2023-12-01 00:24:34 25 4
gpt4 key购买 nike

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

我已经对它进行了广泛的测试:Win XP 和 Win 7 上的 Safari、Chrome、Opera、Firefox、IE6 IE7 IE8 IE9(兼容模式和非兼容模式)都可以完美运行。在多次测试中从未失败。所有这些都使用标准默认设置并启用了 JavaScript 和 Cookie。

在生产中,调用很少会失败,但数百个用户中有几个失败了。可能是五十分之一或百分之一。我无法理解这一点,因为在所有情况下:

  • 用户使用 jQuery 进行非跨域 ajax 调用没有遇到问题。 (即非跨域调用有效,因此必须启用 JavaScript 并支持 ajax)。

  • 用户仅在使用 jQuery 进行跨域 ajax 调用时遇到问题。即使经过多次尝试。 IE。用户要么有问题,要么没有问题,不会先失败然后工作,也不会先工作然后失败。只有其中之一。

  • 以下是受影响用户的用户代理字符串示例:

    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/跨域问题,因为当浏览器设置为默认值时不会发生这些问题,而且因为我已经以正确的方式完成了它:* 时间戳字符串放在末尾以停止 super 缓存* JSONP响应等等等等

我可以确认该调用根本没有触发。

最佳答案

这个问题最近也困扰着我。我的研究表明 jQuery ajax 调用由 IE 缓存,因此 IE 决定不需要获取数据,这可以解释为什么没有发生任何事情。这些问题有帮助Stop jquery load response from being cachedgetjson returning cached data in IE8

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

$.ajaxSetup({ 缓存: false });

关于jQuery跨域Ajax JSONP调用在某些IE版本中随机失败,原因不明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com