Javascript/JQueryの非同期性に問題があります。jqueryを使用した複数のajaxリクエスト
以下のように言います(レイテンシは考慮されません)。
私は1つのページに3つのボタン(A、B、C)を持っています。それぞれのボタンはショッピングカートにアイテムを1つ追加し、それぞれ1つのajax-requestを要求します。 は、私はサーバーサイドスクリプト(PHP)での5秒の意図的な遅延時間を置くと離れて1秒でボタンを押すと、私は結果は次のようになりたい:
Request A, 5 seconds
Request B, 6 seconds
Request C, 7 seconds
しかし、結果はこの
ようなものですRequest A, 5 seconds
Request B, 10 seconds
Request C, 15 seconds
これは、要求がキューに入れられていて同時に実行されていないことを意味しています。これはasyncとは逆のものではありませんか?私はまた、URLにランダムなget-parameterを追加して、リクエストにいくつかの一意性を強制しましたが、幸運はありません。
これについて少しお読みになりました。同じ "要求オブジェクト(?)"を使用しない場合、この問題は発生しません。 JQueryでこの動作を強制することは可能ですか?
これは私もGETやPOST、違いはありません両方試してみました私は
$.ajax(
{
url : strAjaxUrl + '?random=' + Math.floor(Math.random()*9999999999),
data : 'ajax=add-to-cart&product=' + product,
type : 'GET',
success : function(responseData)
{
// update ui
},
error : function(responseData)
{
// show error
}
});
を使用していたコードです。
ボタンをクリックした直後にリクエストを送信するようにしました。以前のリクエストが完了したときではなく、リクエストが送信されます。私はリクエストをキューではなく同時に実行したい。
ここにJavaScriptコードを掲載できますか?デフォルトでは '$ .ajax'はasync –
@Emilで、Math.Randomなどを削除して' cache:false'を使用します。 – Anders
jqueryは呼び出しごとに新しい非同期接続を使用すると考えました。 –