栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

XDomainRequest中止IE 9上的POST

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XDomainRequest中止IE 9上的POST

我不确定这是同一个问题,但就我而言,所有这些都需要设置:onerror; 进行中 超时 和加载。这里是一些讨论该问题的参考:

  • http://social.msdn.microsoft.com/Forums/ie/zh-CN/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-未指定处理程序
  • http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/
  • http://rudovsky.blogspot.com/2012/09/microsoft-shit-xdomainrequest.html
  • https://github.com/faye/faye/pull/98

还有很多其他的。他们的建议解决方案分散,有时矛盾。例如,建议将xdr.send调用包装在setTimeout中。

我看到的行为通过为每个事件处理函数添加非空白主体而消失了。我不确定是否全部必要。该setTimeout的包装肯定 不是 必要的。

一条可能不相关的信息:在我的情况下,我决定将每个处理程序绑定到“
this”对象。我还添加了函数实现,以防止编译器将它们全部分配给同一空函数。我的代码使用的是GET,而不是POST。YMMV。

您的代码使一个处理程序保持不变:

if (window.XDomainRequest) // Check whether the browser supports XDR.{    xdr = new XDomainRequest(); // Create a new XDR object.    if (xdr) {        xdr.timeout = 3000;//Set the timeout time to  3 second.        xdr.onload = function () { alert("Success");        };        xdr.onerror = function () { alert("Error");        };        xdr.ontimeout = function () { alert("Error");        };        // this also needs to be set        xdr.onprogress = function() { window.console.log('progress');        };        xdr.open("post", urlSearch);        xdr.send();    }}else {    $.ajax({        url: urlSearch,        type: 'POST',        dataType: 'json',        timeout: 3000,        success: function (data) { alert("Success");        },        error: function () { alert("Error");        }    });}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427476.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号