2016-10-21 5 views
0

私は次のコードを動作させることはできません。 ajax呼び出しが動作し、msg ['username']が 'john'にプリセットされているとします。 私はコールバックに変数を渡す方法と混同していると思います。 編集:私の主な混乱は、Ajaxから 'msg'変数を取り出す方法でした。 Ajaxには、ハードワイヤードの成功メソッドがあります。これは、ajaxクエリのデータを後で使用したい場合に使用する必要があり、そのメソッドだけがajax呼び出しの結果にアクセスできます。Javascriptのコールバック - それらに変数を渡すと

<script> 
    $(document).ready(function(){ 
     function freedome(horace){ 
      $.ajax({ 
       url: "RESPONDERdetails.php", 
       type: "GET",   
       dataType: "json", 
       data:{thing:31} 
      });  
      horace(msg); 
     } 

     function callbacker(msg){ 
      alert("I am callback"); 
      name = msg["username"]; 
      alert(name); 
     } 

     freedome(callbacker(msg)); 
     }); 
</script> 
+0

可能な重複http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchronous-コール) – nem035

+1

'freedome(callbacker);' – epascarello

+3

[ '$ .ajax'](http://api.jquery.com/jquery.ajax/)コールバックを実行するための' SUCCESS'オプションがあります。あなたの 'horace'はそこにいる必要があります。また、 'callbacker'を' freedome'に渡すだけです。今では、 'callbacker'をいくつか存在しない' msg'の値を渡して呼び出し、その戻り値*を 'freedome'に渡そうとしています。 –

答えて

1

あなただけfreedome(callbacker);を使用したい: は、ここでは、コードです。 JavaScriptでは、関数は変数のように扱うことができます。したがって、関数自体をパラメータとして渡すだけです。

あなたがhorace(msg);を行う際に、callbackerがパラメータとしてmsgと呼ばれるように、これは、関数にhoraceになります。

また、msgはあなたの例ではどこにも宣言されることはありませんし、あなたのhorace(msg);は、AJAX呼び出しが行われ前を実行します。ここでAJAXコールのコールバックを使用する必要があります。

$(document).ready(function(){ 
    function freedome(horace){ 
     $.ajax({ 
      url: "RESPONDERdetails.php", 
      type: "GET",   
      dataType: "json", 
      data:{thing:31}, 
      success: function(msg){ 
       horace(msg); 
      } 
     }); 
    } 

    function callbacker(msg){ 
     alert("I am callback"); 
     name = msg["username"]; 
     alert(name); 
    } 

    freedome(callbacker); 
}); 
[私は非同期呼び出しからの応答を返すにはどうしますか?](の
+0

さらに明確にするために...私は2つの混乱があると思います。 1つは、コールバックを関数に渡すと、コールバックが常に最後に実行されるということです。 – John

+0

さらに明確にするために、Ok ...私は2つの混乱があると思います。 1つは、コールバックを関数に渡すと、コールバックが常に最後に実行されるということです。 – John

+0

さらに明確にするために...私は2つの混乱があると思います。 (1)最初に、コールバックを関数に渡すと、コールバックは常に最後に実行されるべきです。しかし、私は元のコードでは、ホーレスがajax呼び出しが終了する前に実行されるという上記のコメントに注意します。そのため、ajax関数のコールバックでは、ajaxの終了後に自動的に最後に実行されないようです。 (2)ajax呼び出しの戻り値を取得するには、「成功」または「完了」のいずれかのメソッドを実行する必要があり、その場合にのみ結果変数にアクセスします。 – John

関連する問題