2013/06/15

登山有感

走在大坑的十號步道
有人快步疾行,很快就到了山頂
有人徐徐而行,有人走走停停,有人氣喘噓噓
但只要不放棄回頭,堅持走下去,一定都可以到山頂

而不管你登頂快或慢,最後也都要下山
回到最初的起點,結束這個旅程

我還是喜歡陪著老婆,慢慢的走到山頂
一邊品味那新鮮的空氣,一邊發掘步道旁小花小草小蟲小鳥
而且到了山頂,沒有人可以一起分享那種愉悅,那到山頂的快樂就少了

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了。