走在大坑的十號步道
有人快步疾行,很快就到了山頂
有人徐徐而行,有人走走停停,有人氣喘噓噓
但只要不放棄回頭,堅持走下去,一定都可以到山頂
而不管你登頂快或慢,最後也都要下山
回到最初的起點,結束這個旅程
我還是喜歡陪著老婆,慢慢的走到山頂
一邊品味那新鮮的空氣,一邊發掘步道旁小花小草小蟲小鳥
而且到了山頂,沒有人可以一起分享那種愉悅,那到山頂的快樂就少了
2013/06/10
jQuery AJAX的怪現象
在使用jQuery,以下列AJAX方式來取得回應時,如下程式,browser發出request後,進入到error的error handler。檢視xhr這個回傳物件,發現status是200 OK,responseText裡也有回傳回來的JSON物件。但一直沒有頭緒這樣為何會進入到error handler。
var url = "";
$.ajax({
url: url,
type: 'GET',
dataType: 'json',
error: function(xhr) {
alert('Ajax request error.');
},
success: _display
});
後來查了資料發現,如果dataType定義為 'json',jQuery會去檢查responseText的內容是否符合JSON的語法定義,並將responseText的內容轉變為JavaScript的物件(Evaluates the response as JSON and returns a JavaScript object. )。所以,如果回應的內容有JSON syntax error的情況,便無法順利轉成JavaScript物件,也就會去trigger error handler了。
所以我的問題就應該是在回傳的JSON內容有問題。使用JSON validator去檢查,果真如此
(網路上有不少JSON validator,可以查一下。我常用的是 http://jsonlint.com/) 。修改一下server side的回傳程式,就OK了。
var url = "
$.ajax({
url: url,
type: 'GET',
dataType: 'json',
error: function(xhr) {
alert('Ajax request error.');
},
success: _display
});
後來查了資料發現,如果dataType定義為 'json',jQuery會去檢查responseText的內容是否符合JSON的語法定義,並將responseText的內容轉變為JavaScript的物件(Evaluates the response as JSON and returns a JavaScript object. )。所以,如果回應的內容有JSON syntax error的情況,便無法順利轉成JavaScript物件,也就會去trigger error handler了。
所以我的問題就應該是在回傳的JSON內容有問題。使用JSON validator去檢查,果真如此
(網路上有不少JSON validator,可以查一下。我常用的是 http://jsonlint.com/) 。修改一下server side的回傳程式,就OK了。
訂閱:
文章 (Atom)