ajaxでstatus code 200なのにfaileが実行される(jQuery)

JavaScript

jQueryで$.ajax()した場合、status codeが200であっても.fail()側に入ることがある。

具体的にはdataType=”json”にしている場合に、response bodyが空だとjsonのparseに失敗してdone()ではなくfailed()が実行される。
サーバー側のレスポンスとしては成立しているためstatus codeは200となるが、その後のclient側の内部エラーでfailedに入るために非常に紛らわしい。

$.ajax(type:’GET’, url: ”, dataType: ‘text’)
dataTypeをtextにすれば解消するが、これだと成功時にparseされないないため、jsonObjectを返していると不便。

とりあえず何でもいいのでサーバー側から空文字以外の何かを返す方が安全と思われる。

コメント