跨域ajax调用在IE中不起作用

时间:2012-11-09 07:28:55

标签: mysql jquery

我正在进行跨域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。 Access-Control-Allow-Origin不允许使用原点http://192.168.9.185。

但是数据在IE以外的所有浏览器中成功插入数据库。

请帮助解决问题

提前致谢。

4 个答案:

答案 0 :(得分:1)

正如@davidrac建议的那样,你可以使用如下的JSONP:

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

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

答案 1 :(得分:0)

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

有关问题的解释,请参阅herehere

答案 2 :(得分:0)

从服务器输出响应时,请添加以下标题:

Access-Control-Allow-Origin: *

这将使IE中的XHR允许。有关详细信息,请查看HTTP access control (CORS)

对于PHP,您可以这样做:

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

答案 3 :(得分:0)

只要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) {
    }
});
}