我在java脚本中有一个for循环:
for(i=1;i<=10;i++){
$.ajax({
type: "GET",
url: "insert_names.php",
success: function (data) {
// some codes
}
});
}
此脚本同时发送所有ajax请求!
但它给我带来了麻烦...
如果在ajax工作时我怎么能阻止继续循环呢?
答案 0 :(得分:2)
如果需要请求以串行而非并行方式执行,您可以通过稍微重新构建来实现。不要使AJAX请求同步,只需使用每个请求的响应来调用下一个请求。
考虑这样的结构:
function sendRequest() {
$.ajax({
type: "GET",
url: "insert_names.php",
success: function (data) {
// some codes
}
});
}
现在请求被包装在您可以调用的函数中。因此,响应上一个请求调用它:
function sendRequest() {
$.ajax({
type: "GET",
url: "insert_names.php",
success: function (data) {
// some codes
sendRequest();
}
});
}
它开始看起来像一个标准的递归模式,所以你现在需要的只是一个终止条件。与原始循环类似,只需使用递增值:
var i = 1;
function sendRequest() {
$.ajax({
type: "GET",
url: "insert_names.php",
success: function (data) {
// some codes
i++;
if (i <= 10) {
sendRequest();
}
}
});
}
然后只需调用一次即可启动它:
sendRequest();
现在请求应该按预期调用10次(除非我的数学是一个,但这应该很容易纠正),每个请求都会响应前一个请求而发生。
使用异步编程时,请勿尝试使其同步。相反,执行操作以响应回调。