2016-06-21 11 views
-1

私はajax呼び出しから戻り値を取得しようとしていますが、関数を実行して変数に保存するときに取得する唯一のものは未定義です。ajaxコールからの戻り値

function check(number, id){ 
    $.ajax({ 
     url: 'ai.php', 
     data: { 
      "func":"checkNumber", 
      "id":id, 
      "number":number 
     }, 
     method: 'GET', 
     dataType: 'json' 
    }).done(function(jData) { 
     return jData['idFound']; 
    }).fail(function(jData) { 
     console.log(jData['idFound']); 
    }); 
} 

var test = check(44444, 12); 
console.log(test); 
// true 

// but i get an undefined value in the console.log 
+0

は 'はconsole.log(JDATA試してみてください.data ['idFound']); ' –

+0

' idFound'というプロパティが結果 'jData'に存在していますか?たぶんあなたは結果についてもっと詳しい情報を提供することができます。 – A1rPun

+0

jData.data ['idFound']はboolを返します。 i console.log(jData.data ['idFound'])boolを書き込みます –

答えて

0

はウルファイル'ai.php'に依存形式のJSONのですか?有効性を確認してくださいhttp://www.jsonlint.com

誤ったコードデータ、その「ポスト」と「取得」が混同されています。

あなたはexemple見て、getjsonまたはAJAXを試すことができます。より多くのコードで遊んでなければ

$(document).ready(function() { 
 

 
\t $.getJSON('http://beta.json-generator.com/api/json/get/NkmG8_zBZ', function(json) { 
 
\t \t for (x=0; x<json.length; x++) { 
 
      console.log('getjson>'+json[x].nome); 
 
     } 
 
\t }); 
 

 
\t $.ajax({ 
 
\t \t type: 'get', 
 
\t \t url: 'http://beta.json-generator.com/api/json/get/NkmG8_zBZ', 
 
\t \t dataType : 'json', 
 
\t \t success: function(json) { 
 
\t \t for (x=0; x<json.length; x++) { 
 
      console.log('ajax>'+json[x].cidade); 
 
      } 
 
\t \t }, 
 
\t \t error: function(err) { 
 
\t \t \t console.log(err); 
 
\t \t } 
 
\t }); 
 
    
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

0

を、これは私には非同期の問題のように見えます。

var test = check(44444, 12); 

しかし、あなたは「行って」コールバック関数内にある場合を除き、あなたが戻り値を保証することはできませんのでundefinedになります後すぐに結果をログに記録する:

この行は、非同期関数を呼び出します。

デフォルトjQueryのAJAXの動作は非同期ですが、あなたは本当にそれが同期する必要がある場合は、それは良い習慣と見なされていないが、あなたは、明示的にオプションを設定することができます。

$.ajax({ 
    async: false, 
    ... 
}); 
+0

私はまだ未定義ですが、値は 'done'の値をconsole.logにすることができます –

+0

コメントで提案を試しましたか? 'console.log(jData.data ['idFound']); ' –

+0

私はconsole.log(jData.data ['idFound']);変数に格納したい値を書き込みます –