这是代码 - 一旦加载文档就会运行(在$(document).ready(function(){中)有没有办法对此进行编码,以便下一个ajax查询在当前的查询之后运行完成?我想在页面上创建更多的ajax调用,但是在完成所有排队的调用之前它们不会执行。如果每个调用都在另一个调用执行后运行,这将给新的ajax调用提供一个机会来到前面最后30个脚本中的下一个脚本内容。任何建议都将不胜感激。
for (var x=0;x<=30;x++)
{
emailnumber = '<?php echo $storage->countMessages(); ?>'-x;
dataString='emailnumber='+emailnumber+'&url=<?php echo $url; ?>&email=<?php echo $email_address; ?>';
$.ajax({
type: "POST",
url: "phpdocument.php",
data: dataString,
success: function(msg){
$('#results').append(msg);
}
});
}
编辑:我应该在某个地方使用setTimeout功能吗?
答案 0 :(得分:2)
在async
来电的选项中将false
设为ajax()
。但是,知道这一点:同步Ajax请求可能会锁定浏览器。这是因为Ajax请求将停止进一步执行直到完成。换句话说,在完成所有Ajax请求之前,您不会退出for
循环。
for (var x = 0; x <= 30; x++) {
emailnumber = '<?php echo $storage->countMessages(); ?>' - x;
dataString = 'emailnumber=' + emailnumber + '&url=<?php echo $url; ?>&email=<?php echo $email_address; ?>';
$.ajax({
type: "POST",
async: false,
url: "phpdocument.php",
data: dataString,
success: function(msg) {
$('#results').append(msg);
}
});
}
答案 1 :(得分:0)
FindEmail('<?php echo $storage->countMessages(); ?>');
$(".unsubscribe_button").live("click", function(event){
var thetd = $(this).parents(".unsubscribe_td");
thetd.empty().append('"loading image url here" alt="" />');
var senderemail = thetd.prev().html();
var emailid = $(this).attr('id');
var dataString='email=<?php echo $_SESSION[email_address]; ?>&emailid='+emailid;
$.ajax({
type: "POST",
url: "php script location",
data: dataString,
success: function(msg){
thetd.empty();
thetd.append('success image url here');
}
});
return false;
});
这就是我正在使用的满足我需求的东西。有人看到任何瑕疵吗?