【问题标题】:Cross domain ajax call is not working in IE跨域 ajax 调用在 IE 中不起作用
【发布时间】:2012-11-09 20:46:06
【问题描述】:

我正在做一个跨域的 ajax 调用。 这是在mysql数据库中插入数据。

var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId + "&query=" + query;
$.ajax({
    type: 'POST',
    url: urlsearch,
    dataType: 'json',
    success: function (data) {
    }
});

当我运行上面的代码时,它会显示一条错误消息

XMLHttpRequest 无法加载 http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=1&query=python&url=http://www.ourgoalplan.com/KLMS/TipView.aspx?id=1785 . Origin http://192.168.9.185 是 Access-Control-Allow-Origin 不允许的。

但数据在除 IE 之外的所有浏览器中都成功插入数据库。

请帮忙解决问题

提前致谢。

【问题讨论】:

    标签: mysql jquery


    【解决方案1】:

    正如@davidrac 所建议的,您可以如下使用 JSONP:

    jQuery.ajax({
        type: 'POST',
        url: urlsearch,
        dataType: 'jsonp',
        jsonp: 'json.wrf'
        success: function (data) {   }
    });
    

    您必须将 json.wrf 参数添加到带有回调函数名称的查询字符串中,才能从 Solr 获得正确填充的响应。

    【讨论】:

      【解决方案2】:

      您可能应该使用 JSONP 或其他一些解决方法。

      请参阅herehere 以了解问题的解释。

      【讨论】:

      • 是的,我已经阅读了这些页面。它在除 IE 之外的所有浏览器中都能正常工作,您能解释一下原因吗??
      • 由于您没有使用 JSONP,我认为这是可行的,因为您添加了 Acces-Control-Allow-Origin 标头。 MSHTML/Trident 4.0 (Internet Explorer 8) 通过 XDomainRequest 对象提供部分支持。我会使用 JSONP 来解决这个问题。
      【解决方案3】:

      当您从服务器输出响应时,添加此标头:

      Access-Control-Allow-Origin: *
      

      这将使 IE 中的 XHR 允许。更多信息请查看HTTP access control (CORS)

      如果是 PHP,你可以这样做:

      <?php
          header("Access-Control-Allow-Origin: *");
      ?>
      

      【讨论】:

      • 我正在使用 asp.net。它在所有浏览器中都可以正常工作,为什么不在 IE 中??
      【解决方案4】:

      只要 IE 为 8+ 并且服务器响应包含 Access-Control-Allow-Origin: [Allowed origins] HTTP 标头,此代码就应该可以工作。

      If (XDomainRequet) {
         //just an example
        var xdr = new XDomainRequest();
        xdr.open("post", url);
        xdr.send();
      }
      else
      {
        $.ajax({
          type: 'POST',
          url: urlsearch,
          dataType: 'json',
          success: function (data) {
          }
      });
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2012-09-17
      • 2011-03-22
      • 2013-06-22
      相关资源
      最近更新 更多