jqueryを使用して異なる入力変数を使用して複数のajax httpを取得するリクエスト
-
04-10-2019 - |
質問
Asychronous Getリクエストを行い、それぞれに提供する入力に基づいて異なる結果を得たいと思います。これが私のコードです:
param=1;
$.get('http://localhost/my_page_1.php', param, function(data) {
alert("id = "+param);
$('.resul 5.t').html(data);
});
param=2;
$.get('http://localhost/my_page_2.php', param, function(data) {
alert("id = "+param);
$('.result').html(data);
});
両方のリクエストの結果は次のとおりです。「ID = 2」結果を次のようにしたい:最初のリクエストでは「ID = 1」、2番目のリクエストでは「ID = 2」。
1つのHTMLファイルで多くのリクエストに対してこれを行い、準備ができたらすぐに結果をHTMLに統合したいと思います。
誰かが私がこの問題を解決するのを手伝ってくれますか?
解決
通話は非同期であるため、上記のすべての行がすでに実行されるまでコールバックは実行されません。これは、最初のGETリクエストが解決する前に、PARAMが値2に設定されることを意味します。
PARAMを再割り当てするだけでなく、PARAM1、PARAM2などの変数の一意の名前を作成します。
編集:
このコードをチェックしてください:
for (var i = 0 ; i < 3; i++) {
param = i;
$.get('http://www.google.com',genCallback(param));
param = i+5;
}
function genCallback(param) {
var cb = function (data) {
alert(param);
}
return cb;
}
正直なところ、私はそれがどのように機能するか本当に分かりません。私は常にパラマリを変えていても、ある順序で数0、1、2に警告することに気付くでしょう。 GETで匿名関数を直接作成する代わりに、パラメーターに基づいて関数を作成します。私が起こると思うのは、閉鎖が作成されることです cb
これには、実行時のGenCallbackのローカルパラマンが含まれます。
他のヒント
Ajax関数を呼び出すと、その要求のコールバックは、コードの残りの部分と同期して処理されます。要求が終了したときに呼び出されるように指定された関数は、以前に呼び出されません...リクエストは終了します。
これは、あなたのコードが最も頻繁に(Ajaxの非同期性のため)機能する方法です。
- あなたが設定した
param = 1
最初のAJAXリクエストを送信します - あなたが設定した
param = 2
2番目のAJAXリクエストを送信します - 最初のゲットコールが終了します。この呼び出しのコールバックは処理されます。あなたの
param
変数は2です - 2番目のゲットコールが終了します。この呼び出しのコールバックは処理されます。あなたの
param
変数2
解決策は、通話ごとに異なる変数を持つか、増分することです param
そして、最初のもののコールバック関数内に2番目のAjaxコールを送信します。