読者です 読者をやめる 読者になる 読者になる

jQueryでajaxが失敗してstatus=0が返ってくる場合の対策

昨日まで動いていた画面をいじっていたら急にajaxの部分が動かなくなったということはありませんか?

 

私は、先ほどまで半日ほど悩まされていました。

 

解決したので、メモしておきます。

 

結論から書いておくと、「cookieを消せ」です。

 

で、念のため詳細です。

 

まず、大雑把には以下のように書かれていると思います。

 

$.ajax({
    url: http://localhost/api/,
    type: 'post',
    dataType: 'json'
}).done(function (data) {
    //
    //いろいろな処理
    //
}).fail(function (jqXHR, textStatus, errorThrown) {
    alert("XMLHttpRequest : " + jqXHR.status);
}).always(function () {
});

この例だと、alertで「XMLHttpRequest : 0」が返ってくるという状態ですね。

 

status = 0が返ってくるのは、そもそも指定した url が存在しなかったりアクセスできなかったりというケースだと思っていたのですが、今回はちゃんとアクセスできるURLでした。

 

散々悩んだ結果、見つけたのが以下のページ。

stackoverflow.com

 

これを読んでいくと、cookieを消してみろと・・・。

 

で、消してみたら見事に復活しました。

 

なぜこうなってしまったのかはわかっていないのですが、ajaxがfailしてstatus=0が返ってきて悩んでいる方の一助になればと思います。