我们正在开发一个用于数据操作的 html5/jquery 应用程序;此应用程序包括 http get 和 http post 操作。使用 ie 版本 < 10、ff 和 chrome,我们的保存/删除/更新操作完美无缺(帖子将对象的信息作为 xml 发送到服务器进行验证),但是在我们运行在 windows 8 上的 ie 10 浏览器中,看起来像ajax post 操作不允许数据参数,即。不发送ajax数据。
类似的帖子建议使用
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" >
和其他变体,但这不起作用。
一旦我们添加以下内容,问题似乎就出现了:
data: {
'lngClassID': 0,
'strAttributes': xmlAsAString,
'strExtendedPar': ""
},
即使数据有 1 个参数,它也不会通过。一些论坛建议这是一个内部 IE10 已知问题,但我很难相信这是这种情况......这意味着任何使用 IE10 的人都不能在互联网上的任何页面上发出任何帖子请求?不大可能...
如果我比较开发人员菜单中“网络”选项卡中的数据,它表明请求标头是 100% 相同的,并且所有其他信息都是相同的
来自 ie 10 和 9 浏览器:
我还读到这个问题是由 jquery 团队提出的,并用“CantFix”标签关闭......
有人有任何解决方案吗?想法?这个真的把我们难住了……
编辑: ajax 请求如下:
DeleteBusinessObject: function (strAttributes, strExtendedPar, fncCallback) {
var webServiceUrl = ServiceAccess.GetRootURL() + "/DeleteBusinessObject";
var promise = $.ajax({
type: "POST",
url: webServiceUrl,
dataType: "xml",
context: this,
data: {
'strAttributes': strAttributes,
'strExtendedPar': strExtendedPar
},
error: this.ManageServerException
});
promise.done(fncCallback);
},
其中 strAttributes 是一个非常长的字符串,其中包含所有带有“<”和“/>”标记的 xml 数据,这些数据都转换为 ASCII。POST 请求不应该与它们关联的最大长度,所以我怀疑这是问题所在。奇怪的是,任何使用 GET 的请求都可以正常工作,所以我相信它真的是带有任何数据参数的 POST 请求的 IE 10 问题?
编辑2:
我确认浏览器没有运行兼容模式
编辑 3: 我找到了解决这个问题的方法。事实证明,Web 服务协议 HttpPost 不在 web.config 文件的协议列表中。只需添加行
<add name="HttpPost" />
在 WebServices > Protocols 中我需要做的就是。我仍然不确定为什么它可以在 ie9、ff 和 chrome 上工作,但不能在 safari 和 ie10 上工作