2012-07-03 49 views
0

正如標題所暗示的,我有以下幾點:JQuery的AJAX試圖解析XML,甚至與 「數據類型」: 「JSON」

$.ajax({ 
    "url" : ... 
, "type" : "GET" 
, "dataType" : "JSON" 
, "success" : function(response_data) { 
    that.data = response_data; 
    success(response_data); 
    } 
, "onerror" : function(data) { 
    console.log(JSON.stringify(data)); 
    } 
}); 

但是當我運行它,我得到

XML Parsing Error: syntax error Location: moz-nullprincipal 

看着螢火蟲,我看到請求是

Accept application/json, text/javascript, */*; q=0.01 
Accept-Encoding gzip, deflate 
Accept-Language en-us,en;q=0.5 
Cache-Control max-age=0 
Connection keep-alive 
Host localhost:8888 
Referer http://localhost:8888/ 
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101  Firefox/13.0.1 
X-Requested-With XMLHttpRequest 

任何想法?

+0

可能不是原因,但應該不是 'JSON' 是小寫?究竟是拋出這個錯誤? – Utkanos

+0

有趣,讓我試試小寫 – Max

回答

2

好的非常感謝大家試圖回答這個問題。但是事實證明,和往常一樣,我在這裏沒有注意到。

Firebug中顯示的XML解析錯誤實際上並不是代碼錯誤,而且螢火蟲未能​​嘗試猜測它是XML並解析它。

我的問題是在程序中的其他地方,它被解決了。

大寫與小寫「JSON」沒有區別。

最大

3

首先將「JSON」更改爲小寫「json」。但是這是jQuery期待從服務器返回的類型,它不一定是服務器將發送的內容。

你是肯定服務器返回JSON嗎?值得重複檢查。你看過小提琴手的反應嗎?如果是XML,這是服務器的問題,而不是腳本。

+0

是的,響應是JSON。它也顯示在螢火蟲中。 – Max

+0

嗯,很奇怪。也許這是JSON> JSON的事情。如果dataType選項未設置或無法識別,jQuery會嘗試猜測響應類型。如果它錯誤地猜測XML可能會解釋這個問題。另一件事情可能是JSON響應本身形成嚴重。 – greg84

1

真正的問題是您的服務器沒有設置'Content-type'標頭。將其設置爲'application/json'。

例如在node.js中:

res.setHeader('Content-type', 'application/json');