昨天早上,来 self 创建的 webix 小部件的 AJAX 调用在 IE 中停止工作(已测试 IE10 和 11)。直到昨天早上它才与 IE 一起工作。
我已经从备份中恢复了昨天早上修改的 php 文件,但仍然无法使用 IE 进行 AJAX 调用。我创建了一个 Webix 片段来帮助说明我遇到的问题 ( http://webix.com/snippet/2047ef57 )。
如果您在除 IE 之外的任何程序中单击代码段/示例中的按钮,您将获得骨科诊所的膝关节外科医生列表。如果您尝试在 IE 中运行相同的代码,您会收到“脚本错误”消息。
我已尝试使用 GET 和 POST 来发出此请求,以避免我在网上阅读到的 IE 缓存问题。
有没有人对我可以尝试让我的 PHP 在 IE 中再次工作有什么建议?
最佳答案
webix 库是浏览器嗅探,并且使用 ActiveX 而不是 IE 的 XMLHttpRequest:
getXHR: function () {
return webix.env.isIE
? new ActiveXObject("Microsoft.xmlHTTP")
: new XMLHttpRequest;
}
如果您切换浏览器的用户代理字符串,从而破坏此浏览器检测,您会注意到跨域请求顺利通过。
您可以按照以下步骤确认这一点:
- 按 F12 打开开发者工具
- 切换到仿真选项卡 (Ctrl+8)
- 将用户代理字符串设置为“Google Chrome”
此时标签页会刷新。按下您的按钮,请注意结果已按预期收到。
webix 正在做的这个测试应该首先检查 XMLHttpRequest 支持,如果存在就使用它。不推荐测试浏览器而不是功能的方法(从您的问题可以看出):
尝试添加以下内容以使用我们自己的测试覆盖此逻辑:
webix.ajax.prototype.getXHR = function () {
return XMLHttpRequest
? new XMLHttpRequest
: new ActiveXObject("Microsoft.xmlHTTP");
}
关于javascript - 带有 CORS 的 Webix ajax 可以在除 IE 之外的任何地方工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494966/