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

沒有留言: