メン醤のjQuery workshop

jQueryの小技などのサンプルをコード例として紹介するブログです。ネイティブJavaScriptから移行したいjQuery初心者向け、jQueryの魅力を知ってもらえたら。

$.ajaxでステータスコード200なのにerrorで処理される

掲題の通りの現象なのですが、
$.ajaxでアクセス自体はstatus 200で返っているのに
errorが呼び出されることがありました。

例だと dataType:'xml' でアクセスしていることがわかると思います。
レスポンスがjsonの場合は dataType:'json' と書かないと error: function(data){ の方が呼ばれてしまいます。

f:id:ryoichi0102:20160126002237p:plain

でもそもそもjQueryajaxは今はDeferredな書き方が推奨されてますのでsuccess/errorよりも

$.ajax({
  type: 'GET',
  url: '〜〜〜',
  dataType: 'json',
}).done(function(data) { // success

}).fail(function(data) { // error

});

と書くのが良いですね。

ちなみに、done/failで書くとdataTypeが違ってもstatus:200であれば
doneが呼ばれるようです。

参考:
stackoverflow.com