2017-03-04 14 views
4

$ .postは非同期ですか?だから私が下のようなコマンドを実行すると、同期しているのではなく、一度にすべてのコマンドが実行されます(1回、待ち、次に1回)。

$(document).ready(function() { 
    var variable1 = '1'; 
    var variable2 = '2'; 
    var variable3 = '3'; 
    var variable4 = '4'; 

    $.post("process.php", {element1: variable1}, function(data){ 
     $("#area1").html(data); 
    }); 

    $.post("process.php", {element2: variable2}, function(data){ 
     $("#area3").html(data); 
    }); 

    $.post("process.php", {element3: variable3}, function(data){ 
     $("#area4").html(data); 
    }); 

    $.post("process.php", {element4: variable4}, function(data){ 
     $("#area4").html(data); 
    }); 
}); 
+2

はい、AJAXリクエストは非同期です。これをテストするには、表示したコードを実行します。 – David

+2

ajax呼び出しは非同期で、$ .postが非同期であることを意味します – Roljhon

+3

良い質問のために下の票を得ることはできません。この情報を見つけることは困難でした。ほとんどのウェブサイトではこれが曖昧です。 – Sol

答えて

3

この質問への答えは簡単ですと文で頭字語示唆ように、すべてのAJAX要求がasynchronosある

として回答することができます。 あなたがはっきり

これは同等です速記のAjax機能、であると述べているJquery website

に$ .post()のAPIドキュメントを参照することができ

(非同期JavascriptとXML) :

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

成功コールバック関数は XMLのルート要素またはテキストSTRIになります返されたデータを、渡され、応答のMIMEタイプによっては、 です。また、応答のテキストステータスも渡されます。

上記の抽出結果から、$ .post()は非同期であることがわかります。

jqueryバージョン< 1.8の場合は、async:falseを使用して同期させることができます。 その後、減価償却されます。 とにかくこのパラメータを使用することはお勧めしません

jqueryバージョン> = 1.8の場合は、.done()コールバックを使用できます。あなたがajax呼び出しの後に実行する必要があるすべての操作を追加することができます

1

あなたがしたいことに最も優雅なソリューションは、単一のJSONにすべてのデータを格納し、別のJSONで答えてデータをデコードして、1回の呼び出しですべてを更新できるようにします。私はそれをコードするだろうが、私はあなたのPHPやHTMLがどのように動作するのか分からない。あなたはそれが同期サミュエル・Jマシューのが正しいようにしたい場合は

デフォルトで
3

$.post()機能は

非同期です。

​​

が戻ってtrueに非同期を設定することを忘れないでください:あなたは$.post()代わりの$.ajax()を使用して保存しておきたい場合は しかし、あなたは、このようにそれを行う必要があります。がんばろう!

関連する問題