2013-05-04 105 views
0

我正在運行一個javascript函數,它從其他服務器獲取數據並將其返回給另一個函數。在Chrome和Firefox這是工作完美,但在IE瀏覽器的任何版本(爲什麼我沒有感到驚訝)功能不工作...以下是代碼IE在接收json響應時沒有收到數據

function getTotalCounts() { 
    var swings = ''; 
    var serviceUrl = 'http://urldata.com/getdata'; 
    $.ajax({ 
     type: "GET", 
     cache: false, 
     contentType: "application/json; charset=utf-8", 
     url: serviceUrl, 
     data: "{}", 
     async: false, 
     dataType: "json", 
     success: function (data) { 
      jQuery.each(data.InteractiveBlockList, function (i, val) { 
       swings = new Array(val.ActivationDay, val.GrassBlockCount, val.GrassSquareMeters, val.InstagramCount, val.PublicTweetCount, val.SwingCount); 
       var gettotalcounts; 
      }); 
      grassification(swings) 
     } 
    }); 
} 

什麼做錯了任何想法?

+1

你是否在ie中發現任何錯誤? – bipen 2013-05-04 17:11:53

+0

即沒有錯誤...只是沒有數據。如果我確實警覺(搖擺),我會從其他瀏覽器收到的數據響應除了IE – 2013-05-04 17:20:30

回答

0

我不會感到驚訝您的問題來自您發送字符串「{}」作爲數據的事實。嘗試發送一個空的對象,而不是:

data: {}, //no quotes 
+0

這是什麼意思?對不起......我不明白 – 2013-05-04 17:20:55

+0

在你的ajax配置中,你有數據:「{}」,把它替換爲:data:{}, – 2013-05-04 17:22:38

+0

沒有什麼區別! – 2013-05-04 17:24:22

0

數據是在阿賈克斯可選..所以,如果你不需要任何信息服務器在您的所有.comment阿賈克斯然後發送沒有必要使用它的data選項

//data="{}"; 

並確保您以;關閉腳本結束。

grassification(swings); 
      //----------^----here 
0

我終於搞清楚了問題所在。首先我添加了一個錯誤調用來查看它是什麼錯誤。在Chrome/Firefox中沒有錯誤,在IE中我遇到了「無傳輸錯誤」。經過一番谷歌搜索後發現問題是由於跨域腳本造成的,本博客給出了更好的解釋http://mike-ward.net/blog/post/00660/force-jquery-1-5-to-always-allow-cross-site-scripting

在使ajax調用解決問題之前添加jQuery.support.cors = true;。奇怪它如何完全拒絕在所有版本的IE瀏覽器上工作,但多數民衆贊成你的!