$.ajax、async:false 和 IE 9+
Posted
技术标签:
【中文标题】$.ajax、async:false 和 IE 9+【英文标题】:$.ajax, async:false, and IE 9+ 【发布时间】:2014-01-08 07:15:03 【问题描述】:我有一个大量使用 jQuery 的 .NET Web 应用程序。在特定页面中,我使用了几个 $.ajax
调用,其中我将 async 设置为 false。我知道 ajax 调用正在检索大量数据,并且我意识到同步使用 $.ajax
是有风险的。我当然可以使用异步调用进行重构;想法和建议表示赞赏。
通话没有异常:
var XX = $.ajax(
url: 'EH/SaveData.ashx',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: jsonString,
async: false,
cache: false
).responseText;
在 VS2010 中,在所有浏览器上一切正常。但是在我们的开发 IIS 服务器上,IE9 和 IE10 需要几分钟才能显示,而 IE8、Chrome 和 FF 则很好。 IE9 中的哪些变化会导致性能出现如此巨大的差异?
好的。伙计们。我已经重构代码以通过 $.ajax 删除同步调用,但 IE 的问题仍然存在。我可以访问 IIS7 配置设置。有人猜到还是 3?
【问题讨论】:
那是什么鬼?async: false
也许你应该从异步请求开始......
建议:采纳你自己的建议并重构为异步
文档说明了一切:Ajax 中的第一个字母代表“异步”,这意味着操作并行发生并且不保证完成的顺序。 $.ajax() 的 async 选项默认为 true,表示在发出请求后可以继续执行代码。强烈建议不要将此选项设置为 false(从而使调用不再是异步的),因为它可能导致浏览器无响应。
我有点怀疑它的同步与完成与其他浏览器相关的请求所需的时间有关。
【参考方案1】:
问题是通过 javascript 函数中的 __doPostback("updatePanelID") 调用更新母版页中的空 updatePanel(以保持会话活动)。我猜视图状态发生了变化,但我不确定 IE 检测到其他浏览器忽略了什么。也许其他人有想法......
【讨论】:
以上是关于$.ajax、async:false 和 IE 9+的主要内容,如果未能解决你的问题,请参考以下文章
async: false 实现AJAX同步请求 ( $.ajax同步/异步(async:false/true) )