Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Webix ajax,CORS在除IE之外的任何地方都能工作_Javascript_Php_Ajax_Internet Explorer_Webix - Fatal编程技术网

Javascript Webix ajax,CORS在除IE之外的任何地方都能工作

Javascript Webix ajax,CORS在除IE之外的任何地方都能工作,javascript,php,ajax,internet-explorer,webix,Javascript,Php,Ajax,Internet Explorer,Webix,昨天早上,来自我创建的webix小部件的AJAX调用在IE中停止工作(测试了IE10和11)。直到昨天早上它还在和IE一起工作 我已经从备份中恢复了昨天早上修改的php文件,但仍然无法使用IE进行AJAX调用。我创建了一个Webix片段来帮助说明我遇到的问题() 如果您在除IE以外的任何地方单击代码片段/示例中的按钮,您将获得一个矫形外科诊所的膝关节外科医生列表。如果你试图在IE中运行相同的代码,你会收到一条“脚本错误”消息 我尝试了GET和POST两种方式来提出这个请求,以避免我在网上看到的I

昨天早上,来自我创建的webix小部件的AJAX调用在IE中停止工作(测试了IE10和11)。直到昨天早上它还在和IE一起工作

我已经从备份中恢复了昨天早上修改的php文件,但仍然无法使用IE进行AJAX调用。我创建了一个Webix片段来帮助说明我遇到的问题()

如果您在除IE以外的任何地方单击代码片段/示例中的按钮,您将获得一个矫形外科诊所的膝关节外科医生列表。如果你试图在IE中运行相同的代码,你会收到一条“脚本错误”消息

我尝试了GET和POST两种方式来提出这个请求,以避免我在网上看到的IE缓存问题


有没有人对我如何让我的PHP在IE中重新工作有什么建议?

基于CORS场景的Webix文档,您可以做两件事。您可以:

  • 配置托管PHP文件的服务器,以便它允许来自另一个域的任何客户端从中获取数据

  • 更改客户端代码,并将JSONP技术与webix.JSONP()方法结合使用-可以在上面提供的链接中找到代码片段

  • 如果您可以访问web服务器的配置,以使用http请求的特定“access Control Allow Origin”头进行响应,则第一个选项非常理想。但如果您没有那么多控制权,那么第二项是您的选择

    webix库是浏览器嗅探,并使用ActiveX代替IE的XMLHttpRequest:

    getXHR:function(){
    返回webix.env.isIE
    ?新的ActiveXObject(“Microsoft.xmlHTTP”)
    :新的XMLHttpRequest;
    }
    
    如果切换浏览器的用户代理字符串,从而中断此浏览器检测,您将注意到跨域请求不会出现问题

    您可以通过以下步骤进行确认:

  • 按F12打开开发人员工具
  • 切换到仿真选项卡(Ctrl+8)
  • 将用户代理字符串设置为“Google Chrome”
  • 此时,选项卡将刷新。按下您的按钮,并注意结果将按预期接收

    webix正在进行的这个测试应该首先检查XMLHttpRequest支持,如果有,就使用它。不建议使用测试浏览器而不是功能的方法(从您的问题可以看出):

    尝试添加以下内容以使用我们自己的测试覆盖此逻辑:

    webix.ajax.prototype.getXHR=function(){
    返回XMLHttpRequest
    ?新的XMLHttpRequest
    :新的ActiveXObject(“Microsoft.xmlHTTP”);
    }
    

    联机测试:

    您是否尝试过清除浏览器缓存?是的,并尝试了多个工作站的代码段/示例,所有结果都相同。我已经在Webix支持论坛()上寻求帮助,但由于他们在白俄罗斯,我不知道他们什么时候会回复我。昨晚我还收到Webix的回复,告知我ActiveX问题。他们建议将isIE标志设置为false,但我更喜欢您修改原型的解决方案,因为它似乎更通用,并且不太可能破坏我可能需要做的任何依赖IE的事情。谢谢我已经实现了选项1,这就是为什么它适用于所有其他浏览器。选项2不是一个选项,因为我需要在我的webapp的其他部分发布,而JSONP只适用于GET。