javaScriptでいろいろやってる時に躓いたとこ忘れないうちに書いちゃいます
やりたかったこと
・Ajaxで通信する
・戻り値を取得する
こんだけ
一番最初書いたコードは以下
$('#no01').on( 'click', function(){ var mailaddress = 'hogehoge@yahoo.co.jp'; var response = is_cheack_mail_Address(mailaddress); alert(response); }); function is_cheack_mail_Address($obj) { return $.ajax({ type: 'POST', url: ajaxurl, 'async': false, data: {'action' : 'is_cheack_mailAddress_to_DB', 'mailAddress':$obj, } }) } is_cheack_mail_Address().done(function(data) { return data; }).fail(function(data) { return data; });
id=no01ってボタンを作ってクリックするとAjax通信をします。
actionでPHPに処理回し後、DBと照合してメールアドレスのチェックをするんですが、Ajaxからのreturnが取れなかった・・・具体的には値が [object object] とかundefineが戻ってくる。困った
いろいろ調べてみると似たような質問がweb上であった
とか
https://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call
とか
でぱらぱらみてみたら戻り値に.responseText をついて解決した的なコメントがあった
console.dirで中身を確認したところ、たしかにresponseTextて項目があって中身も入ってる
修正したのが下記
$('#no01').on( 'click', function(){ var mailaddress = 'hogehoge@yahoo.co.jp'; var response = is_cheack_mail_Address(mailaddress).responseText; alert(response); console.dir(response); }); Ajax部分を変更してもできるっぽい
太字が追加部分
わかれば簡単なんだけど2時間位悩んだ・・・
まぁ解決したしいっか