我有一个页面试图通过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