2010-02-01 56 views
1

我試過從jQuery 1.2.6升級到1.4.1。 JSON查詢現在失敗,並顯示錯誤:「parseerror,invalid label」升級到jquery 1.4.1&現在得到解析錯誤

我簡化了代碼,使其達到最小值。 PHP程序的

var jsonUrl = "process_01.php"; 
$.ajax({ 
type: "POST", 
url: jsonUrl, 
data: "var=myVar",   
dataType: "json",  
beforeSend: function(msg) { 
}, 
success: function(msg) { 
}, 
error: function (msg, textStatus, errorThrown) { 
    alert("an error has occured (" + textStatus + " " + errorThrown +")"); 
    } 
}); 
return false; 
} 

輸出爲 { 「foo」 的: 「酒吧」, 「IsTrue運算」: 「真正的」}

我可以在Firebug看到這個

+1

你確定你的返回的JSON是合法的嗎?像,沒有流浪的逗號或任何東西? – Pointy 2010-02-01 21:04:10

+0

嗯,實際上螢火蟲不認爲它是JSON(缺少額外的JSON標籤)。其實舊版本也不被識別爲JSON! 但它通過JSLint。順便說一句,它在IE和Mozilla都失敗。 – 2010-02-01 21:08:43

+0

JQuery在1.4版本中解析器得到了更嚴格的要求(請參閱http://yehudakatz.com/2010/01/15/jquery-1-4-and-malformed-json/)。不過,您的JSON對我來說看起來還不錯。 – 2010-02-02 21:45:09

回答

0

確保您的內容類型設置爲application/json。

也看看this,看起來類似於你的問題。

+1

它看起來像我的PHP腳本在標題之前拋出一個空行。 – 2010-02-01 22:10:49

0

應該有單引號括起來發送的值。像this guy一樣。

+0

但他已經用他的價值 – 2010-02-01 21:14:27

+0

引用了單雙引號。同樣的結果...我發現奇怪的是,螢火蟲不認識這個JSON ... $ returnArray = $ arr = array(「foo」=>「bar」,「isTrue」=>「true」); echo json_encode($ returnArray); 其他人可以試試嗎? – 2010-02-01 21:19:11

+1

我發現http://dev.jqueryui.com/ticket/5104這似乎說json_encode是不夠「有效」。相反,他們實現了一個自定義函數'array_to_json',見http://dev.jqueryui.com/browser/trunk/demos/autocomplete/search.php?rev=3749#L636。我仍然無法弄清楚究竟是什麼使它無效。 – 2010-02-02 21:07:40

0

如果它能幫助其他任何人發現這個問題,那麼原始海報表示他並沒有將應用程序/ json發送出去。在我來說,我遇到了麻煩解析雙引號字符串中引用的撇號這樣的:

{"description": "An invalid person\'s JSON"}

貌似1.3.2了這一點,但1.4.1拒絕。猜猜我必須找到一個更優雅的方法來逃避服務器端。請參閱http://jsbin.com/oveci3以供參考。

相關問題