2011-12-19 75 views
1

我正在嘗試進行ajax調用,並返回類似於JSON對象的東西;未捕獲的SyntaxError:意外的令牌:&無效的標籤錯誤

{ 
id: 6, 
success: "true" 
} 

我的Ajax調用:

window.foobar = function(foo){ 
    $.ajax({ 
      url: "http://foobar.com/sites/foo/", 
      dataType: "jsonp", 
      success: function (data) { 
     alert(data); 
      }, 
      error: function() { 
      } 
     }); 
} 

這Ajax調用是跨站點調用。 在chrome它給:Uncaught SyntaxError: Unexpected token :firefox它給:

invalid label 
http://localhost:8080/sites/foo/?callback=jsonp1324336100888&_=1324336100894 
Line 1 

但是,當我從same domain調用它工作正常。

回答

0

如果您聲稱支持JSONP,則需要實際支持它。你的代碼是有效的JSON,但它是無效的Javascript:對JSONP請求的響應必須是有效的Javascript。 (準確地說,你的代碼是無效的,因爲{}劃定了一個塊而不是對象文字)。

如果你實現了JSONP,你需要將數據包裝到一個函數中,該函數的名字在URL,在callback參數中。因此,在這種情況下,您需要發佈以下代碼:

jsonp1324336100888({ 
id: 6, 
success: "true" 
}); 

顯然,你需要調用函數的準確名稱取決於callback URL參數。

+0

該代碼是_almost_有效的JSON:屬性名稱應該是(雙)引用完全有效的JSON。 (JavaScript會傾向於原諒這種情況,因爲JS對象文字可以有不帶引號的屬性名稱。) – nnnnnn 2011-12-20 00:25:45

+0

@nnnnnn確實如此,感謝您的澄清。 – lonesomeday 2011-12-20 00:26:31

相關問題