重複の可能性:
return AJAX callback return
AJAX を使用して JQuery コードを作成しましたが、すべての努力 ( $.post
、$.get
および を $.ajax
試行) にもかかわらず、応答を取得することも、コードで使用することもできません。コード例:
var r = $.post("ajaxpage.php", function(data) {return data});
console.log(r); // nothing
重複の可能性:
return AJAX callback return
AJAX を使用して JQuery コードを作成しましたが、すべての努力 ( $.post
、$.get
および を $.ajax
試行) にもかかわらず、応答を取得することも、コードで使用することもできません。コード例:
var r = $.post("ajaxpage.php", function(data) {return data});
console.log(r); // nothing
Javascript と AJAX に関する初心者プログラマーの最も一般的な誤解の 1 つは、AJAX 要求を「通常の」関数として扱い、変数の割り当てを行うか、コードで AJAX 応答をすぐに使用することを期待することです。
ただし、それは機能しません。正しい実装がどのように機能するかを理解しようとしましょう。
AJAXはAsynchronous JavaScript and XMLの略です 。
XML の部分 ( を介してリクエストがどのように処理されるかについての詳細) はしばらく無視XMLHttpObject
します。
AJAX について次のように考えてみてください。これは、仕事中に仕事の電子メールを同僚に送信し、情報を提供するようなものです。実行するアクションおよび/またはその他の情報を要求する。友達がすぐに応答するかどうかに関係なく、応答が遅れる可能性があるため、仕事を続行する必要があります (友人は今日特に忙しい可能性があります)。友達が関連情報を答えてくれたら、あなたはその問題に対処し、適切な行動を取ります。アクションが要求された場合、同僚はあなたのメールを受け取ったときにのみそれを実行します。
AJAX も同様の方法で動作します。クライアント側からサーバー側のページにリクエストを送信し、アクション(データベースに行を書き込むなど) または応答(ページからサーバー側でフェッチされたデータの一部)を期待します。呼んでいます。
重要な点は、クライアント (JS はクライアント側で実行されることを思い出してください) がサーバー (遅いサーバー) に対して AJAX 呼び出しを行うときに大幅な遅延が発生する可能性があるため、ラウンドトリップの完了に関係なく、JavaScript コードが実行を継続することです。 、接続が遅いなど)。
したがって、次のようなことは期待できません。
var r = $.post("ajaxpage.php", function(data) {return data});
$.post
「通常の」関数のように実際には値を「返さない」ため、変数r
は $.post で評価できません
done
代わりに、AJAX 呼び出しが完了した後に発生するイベントに基づいてコードを編成する必要があります。これは、 (サーバー側のエラー、ページが見つからないなどの障害が発生していない場合) 実際に成功時にコードで使用する応答。そのイベントを使用して、応答をパラメーターとして受け取り、実際に使用する関数を呼び出すことができます。
$.post("ajaxpage.php").done(useMyResponse);
// rest of the code
function useMyResponse(response)
{
// do fancy things with the response like:
console.log(response); // works!
// or maybe
$("#someElement").html(response);
}
これを簡略化すると、次のようになります。
$.post("ajaxpage.php",function (response) {
// use response
console.log(response);
});
編集:私は英語のネイティブ スピーカーではありません。間違いをお許しください。