javascript - 带有 CORS 的 Webix ajax 可以在除 IE 之外的任何地方工作

标签 javascript php ajax internet-explorer webix

昨天早上,来 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;
}

如果您切换浏览器的用户代理字符串,从而破坏此浏览器检测,您会注意到跨域请求顺利通过。

您可以按照以下步骤确认这一点:

  1. 按 F12 打开开发者工具
  2. 切换到仿真选项卡 (Ctrl+8)
  3. 将用户代理字符串设置为“Google Chrome”

此时标签页会刷新。按下您的按钮,请注意结果已按预期收到。

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

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

webix.ajax.prototype.getXHR = function () {
    return XMLHttpRequest
        ? new XMLHttpRequest
        : new ActiveXObject("Microsoft.xmlHTTP");
}

在线测试:http://webix.com/snippet/5e654155

关于javascript - 带有 CORS 的 Webix ajax 可以在除 IE 之外的任何地方工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494966/

相关文章:

javascript - Meteor 模板 onRendered 回调未调用

php - PDO FETCH_CLASS 和命名空间问题

javascript - 将字符串参数传递给点击绑定(bind),同时在 Knockoutjs 中保留默认参数

javascript - 使用预定义数组的随机值在时间间隔内对 "background-position"进行动画处理

php - 识别何时发生更新?

PHP MVC - 在 Controller 或模型中存储用户变量?

javascript - Yii2 和 Ajax : The response is not the SQL query results

ajax - mvc 部分 View ajax 更新将部分 View 作为页面返回

php - 使用codeigniter和jquery插入后如何获取最后插入的ID

javascript - 如何使用javascript更改div中的属性