jquery – 互联网浏览器(仅)间歇性地中止AJAX帖子

前端之家收集整理的这篇文章主要介绍了jquery – 互联网浏览器(仅)间歇性地中止AJAX帖子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
过了一个星期,把我的头发拉出来

使用:

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" />

互联网浏览器(8/9/10)将随机中止AJAX POST请求(非常随机)

通过中止,我的意思是,没有人通过http“完全”发送 – 它只是中止,然后把眼泪放在眼里.

F12开发工具网络下载:

URL我的网址是正确的

结果(中止)它字面上读取(中止)

键入空白 – 在这里字面上没有

收到0B

取202ms

发起者(待定)它字面上读(待定)

开始捕获请求:

请求标题为空

请求体为空

电子邮件是空的

但是在“时间表”选项卡下,我注意到它按顺序说
等待
开始
开始
间隙
DOMContentLoaded(event)
负载(事件)

应该开始有两次?或者我以某种方式提交请求两次,这是导致中止的.

我会说,成功的POSTS在定时选项卡下启动两次.

我也是console.log错误并得到:

xmlhttprequest.ReadyState 4

xmlhttprequest.Status: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,函数,然后它死/中止.

这是我一直在寻找的年龄,找不到决心.

我的表单是标准的HTML表单,我发布应用程序/ x-www-form-urlencoded并从头服务器接收JSON应用程序/ json;字符集= utf-8的

有谁有任何线索或类似的问题吗?

或者这只是下面发布的标准错误,如果是这样,你如何解决

http://bugs.jquery.com/ticket/9352

非常感谢,如果你有任何建议,持有从一年的发展推出,因为现在.

解决方法

我有同样的问题,IE 8和11工作正常,但IE 9和10没有.我也在使用IE10及以下的xdomain请求,因为它具有以前的浏览器的跨域ajax请求问题,

我找到了这个:

http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/

if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get","someurl");
xdr.onload = function () {
var JSON = $.parseJSON(xdr.responseText);
if (JSON == null || typeof (JSON) == 'undefined')
{
    JSON = $.parseJSON(data.firstChild.textContent);
}
processData(JSON);
};
xdr.onprogress = function(){ };
xdr.ontimeout = function(){ };
xdr.onerror = function () { };
setTimeout(function(){
    xdr.send();
},0);
}

然后做一个其他的,并做jQuery的最新,体面的浏览器.

猜你在找的jQuery相关文章