我有一個頁面試圖通過jQuery運行3個單獨的ajax調用。不幸的是,每次我加載頁面時,只有兩個ajax調用會運行。另外,3個呼叫中的哪一個將運行並不一致。爲什麼我不能運行兩個以上的連續jQuery ajax調用?
這裏是jQuery代碼(在order.php頁):
$.ajax({
type: "Post",
url: "includes/get_product_info.php",
data: "id=7",
success: function(data) {
console.log('First One Works!');
}
});
$.ajax({
type: "Post",
url: "includes/get_product_info.php",
data: "id=6",
success: function(data) {
console.log('Second One Works!');
}
});
$.ajax({
type: "Post",
url: "includes/get_product_info.php",
data: "id=1",
success: function(data) {
console.log('Third One Works!');
}
});
下面是PHP腳本(get_product_info.php):
include("connection.php");
$conn = dbConnect('query');
$sql = 'SELECT *
FROM products
WHERE product_id = ' . $_POST['id'];
$result = $conn->query($sql) or die(mysqli_error($conn));
$rows = array();
while($row = $result->fetch_assoc()) {
$rows[] = $row;
}
echo json_encode($rows);
當我加載order.php有時它會顯示'First One Works'和'Second One Works',但有時它會顯示'Third One works'和'First One works'等。這表明,它每次只運行兩次ajax調用,是隨機的,它會運行。
如何以正確的順序運行所有三個ajax調用?
您不能保證順序,因爲它是一個異步過程。通常這些請求應該按照它們發送的順序進行,但這取決於客戶端和服務器。如果服務器在第一個響應之前發送第三個響應,那麼客戶端將在第一個響應之前獲得第三個響應,並且在異步環境中沒有什麼可以對付它。如果您需要按給定順序發送請求,請不要使用AJAX或在前一個請求成功後發送下一個請求。 – Zeta
您是否嘗試過'async:false' – Khaleel
因爲有些瀏覽器會讓您在同一時間內執行最多2個請求。 http://stackoverflow.com/a/15765647/739897 – Narek