【发布时间】:2013-07-22 13:19:06
【问题描述】:
把我的头发拔了一个多星期。
使用:
jQuery 1.9.1
malsup 表单插件使用类似于 JSON 的例子:http://malsup.com/jquery/form/#json
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> with of without same error
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Internet explorer (8/9/10) 将随机中止 AJAX POST 请求(非常随机)
通过中止,我的意思是,“根本”没有通过 http 发送任何内容 - 它只是中止然后让我泪流满面。
F12网络下的开发者工具读取:
网址 我的网址是正确的
结果(中止)字面意思是(中止)
输入 空白 - 这里实际上什么都没有
收到0B
耗时 202 毫秒
Initiator (Pending) 字面意思是 (Pending)
打开请求的捕获:
请求标头为空
请求正文为空
一切都是空的
然而在“计时”标签下,我注意到它按顺序显示 等待 开始 开始 差距 DOMContentLoaded(事件) 加载(事件)
应该 开始有两次吗?还是我以某种方式提交了两次请求,这是导致中止的原因。
我会说,成功的 POSTS 在时间选项卡下有两次开始。
我也 console.log 错误并得到:
xmlhttprequest.ReadyState 4
xmlhttprequest.状态:12019
这当我第二次单击提交时,它起作用了。客户不会喜欢这样...
$('#formId').ajaxForm( {
dataType : 'json',
cache: false,
beforeSend: beforeGenericPostForm,
success : FormResponse,
error: genericError
});
$('#formSubmitId').click(function(e){
e.preventDefault();
//perform some custom simple form validation - return false if problem
$('#formId').submit();
});
所以 genericError 被调用并在上面给我错误消息。
我可以 console.log 直到 beforeSend: beforeGenericPostForm, function 结束,然后它死掉/中止。
这是我多年来一直在寻找的东西,但找不到解决办法。
我的表单是标准的 HTML 表单,我发布 application/x-www-form-urlencoded 并从服务器接收带有标题 application/json 的 JSON;字符集=utf-8
有没有人有任何线索或类似的问题?
或者这只是下面发布的一个标准错误,如果是,你如何解决它?
http://bugs.jquery.com/ticket/9352
非常感谢您有任何建议,由于这个原因,从发布到现在保持了多年的发展。
【问题讨论】:
-
在您的 POST 中间是否有任何形式的导航?如果您在 Fiddler 中观看,POST 是否会遇到问题?
-
网络上什么都没有。我正在开发工具网络中观看?
-
好吧,对于任何感兴趣的人,我使用标准 jquery ajax 发布测试回纯 jquery1.9.1,但在 IE10 中仍然出现相同的错误。因此,为了解决这个问题,考虑到请求永远不会离开浏览器,我只需将请求重新发布最多 3 次,然后再显示一条重试消息,它似乎就像一个魅力,最终用户永远不知道它正在发生,一切都很好,这是一个hack,但这对任何人来说都不是开销(除了损坏的 IE :)
-
有趣,甚至可能更糟糕的是,我在图像方面遇到了同样的问题。更烦人 - 一些得到“(中止)”结果的实际上正在显示
-
我们很高兴地报告重试破解(有些人会认为重试解决方案)仍然有效。
标签: jquery ajax internet-explorer xmlhttprequest abort