昨天早上,我创建的webix小部件的AJAX调用停止在IE中工作(测试IE10和11)。直到昨天早上,它一直在与IE合作。
我已经恢复了我昨天早上从备份中修改过的php文件,但仍无法使用IE进行AJAX调用。我已经创建了一个Webix片段来帮助说明我遇到的问题(http://webix.com/snippet/2047ef57)。
如果您点击除IE之外的任何内容的代码段/示例中的按钮,您将获得整形外科诊所的膝盖外科医生名单。如果你试图在IE中运行相同的代码,你会得到一个"脚本错误"信息。
我已尝试使用GET和POST来发出此请求,以避免我在线阅读的IE缓存问题。
有没有人对我可以尝试让我的PHP在IE中再次运行有什么建议?
答案 0 :(得分:2)
webix库是浏览器嗅探,并使用ActiveX代替XMLHttpRequest进行IE:
getXHR: function () {
return webix.env.isIE
? new ActiveXObject("Microsoft.xmlHTTP")
: new XMLHttpRequest;
}
如果您切换浏览器的用户代理字符串,从而破坏了浏览器检测,您会注意到跨域请求没有问题。
您可以按照以下步骤进行确认:
此时标签将刷新。按下按钮,并注意按预期收到结果。
webix正在进行的这项测试应首先检查XMLHttpRequest支持,如果它存在则使用它。不推荐测试浏览器而不是功能的方法(显而易见):
尝试添加以下内容以使用我们自己的测试覆盖此逻辑:
webix.ajax.prototype.getXHR = function () {
return XMLHttpRequest
? new XMLHttpRequest
: new ActiveXObject("Microsoft.xmlHTTP");
}
答案 1 :(得分:0)
根据CORS场景的Webix文档,您可以做两件事。你要么:
配置托管PHP文件的服务器,以便允许来自其他域的任何客户端从中获取数据
或者
如果您访问Web服务器的配置以响应特定的" Access-Control-Allow-Origin"第一个选项是理想的选择。 http请求的标头。但如果您没有那么多控制权,那么第二项是您的选择