2011-08-12 15 views
2

可能性の重複:
How to return value from $.getJSON

 function get_url(){ 
      var returnValue = null; 
      $.getJSON('http://127.0.0.1:1337/?callback=?&command=get_url', "", function(data){ 
       data = $.parseJSON(data); 
       returnValue = data[0].get_url; 
       console.log(returnValue); // "not_null" 

      }); 
      console.log(returnValue); // "null" 
      return returnValue; 
     } 

なぜ機能は "NOT_NULL" を返しませんか?

答えて

3

$.getJSONへの呼び出しは非同期で、get_url関数が返される前に完了していません。返す値はreturnValueにはありません。

$.getJSONではなく$.ajaxasync:falseを使用してコールを同期させるか、非同期の方法で戻り値を処理し、呼び出しロジックを直ちに期待しないように変更する必要があります。あなたの代わりにこれを行うことができますので

$.getJSON 

は、単に$アヤックスへの呼び出しの省略形です:

$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    async: false, 
    success: callback 
}); 
+0

は、どのように私は「NOT_NULL」を返すことができますか? – ExyTab

+0

$ .getJSONへの呼び出しをasync:falseで$ .ajaxの呼び出しに変換します。成功関数のコードが機能します。 –

+0

作業しないでください。 関数get_url(){ \t var returnValue = null; \t $アヤックス({ \t \t URL: 'http://127.0.0.1:1337/?callback=?&command=get_url'、 \t \tデータ型: 'JSON'、 \t \t非同期:偽、 \t \t成功:関数(データ){ \t \t \tデータ= $ .parseJSON(データ); \t \t \tはconsole.log(データ[0] .get_url); \t \t \tのreturnValue =データ[0] .get_url。 \t \t \t} \t}); \t console.log(returnValue); \t return returnValue; } – ExyTab

関連する問題