在IE 9中,使用以下任一方法向我的服务器发送AJAX请求时
// SproutCore
SC.Request.postUrl(...).send()
// jQuery
$.post(...)
在函数返回之前,我总是看到将近30秒的延迟,即使我可以在WireShark中清楚地看到收到了请求。自从我使用Wireshark已经有一段时间了,所以也许我只是读错了,但我看到以下内容,这让我觉得这可能是一个Apache问题?
Time Info
-------------------------------------------------------------------
77.716243 [PSH, ACK] Seq=1 Ack=1031 Win=7808 Len=896
107.576027 [FIN, ACK] Seq=897 Ack=1032 Win=7808 Len=0
注意几乎精确的30秒差异。此外,我已确认第一个请求包含来自服务器的正确数据。
这只是IE 9中的一个错误吗?或者我的Apache服务器上的配置错误?
任何想法都会非常赞赏!
答案 0 :(得分:1)
嗯......看起来这不是问题。显然重新启动我的计算机修复了问题,因此它不是代码级问题。很抱歉把它转移到SO领域。但是,希望在发布问题之前,其他人会看到并重启: - )
更新:我再次遇到错误,但我认为这与服务器有关,所以我打开了question on Server Fault。
更新x2:嗯,这不是一个真正的解决方案,但我通过使用以下代码找到了解决方法:
didSend: function(request, response) {
if (SC.browser.msie && request.get('type') === "POST") {
setTimeout(function() {
Core360.Request.getUrl('/test_server').send();
}, 500);
}
}
由于某种原因,这会强制关闭先前的连接,显然GET请求会立即返回并且没有待处理,所以它可以正常工作。
我希望将来可以帮助一些可怜的灵魂。