Ajaxの返り値を取得する
Ajaxの返り値を取得する方法をおしえてください。
Submit時にAjaxでDBを見に見にいってその返り値によってエラーを表示するかそのまま進むかというものになります。
(以下コード自体はいろいろ端折っております。)
html
<form action="NEXTPATH"...>
<input type="text" id="email">
<input type="submit" id="submit" value="send">
</form>
<div id="error"></div>
でもって、JSでは、
$(function(){
$("#submit").click(function(){
function testajax() {
return $.ajax({
type: 'get',
datatype: 'json',
url: 'api.php',
});
}
var re = testajax().done(function(data){
console.log(data['status']);
if (data['status'] == 'OK' && data['message'] == false) {
return false;
}
});
console.log(re);
if (re == false) {
$("#error").html('エラーです。');
}
return re;
});
});
こういった感じです。api.phpからは単純にjson形式で値が返ってきます。
{"status":"OK","message":true}
Ajax自体はちゃんと動いていてjsonの値をとってこれられるのですが、testajax()という関数から想定した返り値が返ってこないといったところです。
非同期なので実行順序が想定した通りに進まず、現時点ではconsole.log(re);のところが先に実行され[OBJECT object]を返してきてその後にconsole.log(data['status']);が実行されております。またtestajax()からは、returnした値ではなく[Object {readyState: 1}]というものが返ってきてしまいます。
1. Ajaxで通信して、返ってきた値を元に様々な判定をして、
2. 関数の返り値として値を返したい。
というだけなのですが、なかなかうまく行きません。
testajax().done(function(data){
....
}
この中では正常に動いているのですが、returnにfalseを返したい(または他の値でもいいと思う)ところですが、返らないので結果的にsubmitのアクションがfalseとtrueの制御ができないため進んでしまいます。
どなたか詳しい方おしえてください。
よろしくお願いします。