エンジニア的な技術的なブログ

webエンジニアの開発の知見を書きます。PHP、javascript、postgres、mysql、あと多少のインフラ周りとか。

なんでよ!? jQuery のajaxでsuccess(たぶん普通だとdone)のコールバックが呼ばれない

 

ajaxの処理でサーバサイドでは、ちゃんとレンスポンスしてて、

 

ブラウザのデベロッパツールのnetworkみても、欲しい値が確認できるのに、successの処理に入らない現象が発生。

 

※ECCUBEの開発でCUBEさんは未だにjquery1.4使ってる都合で、古い書き方のajax処理しなきゃいけないから下記のような記述

 

>|javascript|

$.ajax({

type:'post',

url:location.href,

data:{'json': 'data'},

success:function(data){

 

},

error:function(req, stat, ex){

alert("原因不明のエラー");

 

},

complete:function(req, stat){

 

}

});

||<

 

 

原因はdataTypeを指定してないからっぽい。

正しくはこう。

 

>|javascript|

$.ajax({

type:'post',

url:location.href,

dataType:'json',

data:{'json': 'data'},

success:function(data){

 

},

error:function(req, stat, ex){

alert("原因不明のエラー");

 

},

complete:function(req, stat){

 

}

});

||<

 

 

ぐぅ。

そうなのか...

 

ちなみにもう1.4とか普通使わないから、1.10とかそれ以上のajaxの書き方について、

このブログでは端折って、参考サイトを2つほど...

 

jQuery モダンAjaxな書き方を目指して 〜Deferredを使ったAJAX〜 - Hack Your Design!

いつの間にか1.10をリリースしてるjQueryについていけてない1.4くらいまでの知識しかない人が見るとちょっとはマシになるページ | NIJILOG