2013-03-21 130 views
0

使用jquery-1.9.1,我启用了CORS支持。跨域ajax jsonp请求在IE8中不工作

$.support.cors = true; 

于是我作出如下处理Ajax请求,我也启用JSONP从服务器端回调支持。

$.ajax({ 
      type: 'GET', 
      url: url, 
      async: false, 
      contentType: "application/json", 
      jsonpCallback: 'jsonCallback', 
      dataType: 'json', 
      success: function(data) { 
       var featureJSON = data.feature; 

      }, 
      error: function(e) { 

      }, 
      complete: function() { 

      } 
     }); 

我已经在JBoss中部署了这一点,并从另一台计算机(不同的域名/ IP地址)访问该页面。这个Ajax调用在另一台计算机的FF和Chrome中运行,并在同一台计算机上运行。

它也适用于IE,但在同一台计算机上。

从比我部署在一个其他的一些其它计算机访问时,在IE浏览器将无法正常工作。

周围的Googling后,我明白了IE *不允许它是由跨域Ajax调用由jquery.And jquery不支持IE的XDomain对象。

总之,我该如何让jquery使用IE的XDomain对象? ,我已经差不多完成了应用程序(我的错,我没有检查XDomain的东西)。我无法再重新编译代码。还有其他解决方案吗?

+1

JSONP不与CORS使用,这是它的替代 – 2013-03-21 13:06:38

+0

@SaurabhBayani我已经试过XDomainRequest,这里http://blog.mycila.com/2011/07/jquery-cors-plugin.html提到,但没有运气,我应该添加CORS支持响应标题从服务器端访问控制 - 允许来源“,”*“? – cherit 2013-03-21 13:18:27

+0

看看,这可能会有所帮助http://stackoverflow.com/questions/3362474/jquery-ajax-failed-in-ie-on-cross-domain-calls – 2013-03-21 13:18:34

回答

2

您无法“启用”CORS ... $。支持应该只是当前浏览器支持的预备表。将false值更改为true并不奇怪地将不支持的功能添加到旧浏览器中!

if ($.support.cors) { 
// your code 
} else { 
    $.ajax({ 
     type: 'GET', 
     url: url, 
     dataType: 'jsonp', 
     data: { 
      callback : '?' 
     }, 
     success: function(data) { 
      var featureJSON = data.feature; 

     }, 
     error: function(e) { 

     }, 
     complete: function() { 

     } 
    }); 
} 
+2

这不是一个答案,应该在评论部分。 – cherit 2013-03-21 18:02:23

+0

是什么?这是一个使用jsonp的解决方案的初始实现,你有没有打算看看它? – 2013-03-21 18:13:16