2013-03-21 81 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