2011-10-07 14 views
0

可能重複:
Cross Domain Limitations With Ajax - JSONJquery在有效的,正確標記的JSON數據上給出了錯誤?

我使用下面的方法來嘗試獲得JSON(我有它發生兩種方式只是爲了看看發生了什麼事情禁用無論哪種方式,公正。運行一個或另一個得到我相同的錯誤)。

   var jqxhr = $.getJSON("http://exampleurl/stats.json", function() { 
       alert("success"); 
      }) 
      .success(function() { alert("second success"); }) 
      .error(function(data) { console.log(data); }) 

      $.ajax({ 
      url: "http://exampleurl/stats.json", 
      dataType: 'text json', 
      cache: false, 
      success: test 
      }); 

當我運行它時,我得到標準200正常,但有錯誤。 (並沒有解釋它,該對象只有一個statusText「錯誤」)。

我得到回(通過tcpdump的和Wireshark)的JSON看起來像:

HTTP/1.1 200 OK

內容類型:應用/ JSON

內容長度: 341

{ 「perIPUsage」:[{ 「10secWindow」:{ 「bitsPerSecond」:904956.8, 「字節」:1131196, 「秒」:10},「2SE CWindow的「:{ 」bitsPerSecond「:867056, 」字節「:216764, 」秒「:2}, 」60secWindow「:{ 」bitsPerSecond「:984093.8666666667, 」字節「:7380704, 」秒「: 60},「地址」:「0:0:0:0:0:0:0:1」}]}

哪個JsonLint說是完全有效的(你會注意到內容類型設置正確)。

我打電話給一個外部地址,所以我不能只是做相對的(我聽說它修復了一些人)。

我在做什麼錯?爲什麼它一直在想我的有效json是錯的?

+0

通過一個外部地址,你的意思是一個域是從那裏你發起AJAX調用不同?您無法使用AJAX呼叫另一個域,因爲這違反了同源策略。 –

回答

0

您正在使用dataType「text json」,它將嘗試將文本轉換爲JSON。但是你沒有得到文本;你得到application/json。所以只需使用dataType「json」,看看會發生什麼。

0

數據類型用於指定返回數據

dataType: 'text/html', 

OR

dataType: 'json', 
相關問題