怎么请求多个ajax,如何处理多个Ajax请求

博客作者在尝试使用Ajax分别发起一个启动短信发送过程和检查发送进度的请求。发送请求需要一到两分钟,但在发送过程中,状态检查的Ajax调用似乎在发送调用完成前不会触发,导致进度条无法更新。作者寻求解决方案,以便在发送操作完成后正确地显示进度和更新用户界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我放弃了试图一次完成处理,并让它在每发送一次x后都返回。

两条路, /SMS?动作=发送 /SMS?行动=状态

假设发送路径开始发送通过REST API调用万条短信。

我通过ajax打电话给那个页面。

然后每隔几秒钟拨打一次/ sms?action = status以查看进度如何进展并更新进度栏。

如果没有消息正在发送,status路径返回false。

结果发生的是,对SEND路径的ajax调用获得了ajax成功:即使我知道该脚本需要1分钟以上才能完成执行,但几乎立即调用该函数。

我的进度条永远不会显示,因为在发送调用完成之前,状态ajax调用(它处于具有几秒延迟的设置间隔内)似乎永远不会被调用。

我试图把相关的代码放在这里,但它可能没有清楚,因为它应该没有所有的上下文。

var smsInterval = 0;

var smsSending = false;

$(document).ready(function() {

var charCount = 0;

var smsText = "";

var smsTotal = <?php echo $options["smsTotal"]; ?>;

smsStatus();

smsSending = true;

smsInterval = setInterval("smsStatus()", 5000);

$("span#smsadmin_charcount").html(charCount.toString());

//send button

$("div#smssend").click(function() {

if(smsSending == true) {

return false;

}

smsStatus();

var dataString = $("#smsadmin_form").serialize();

smsSending = true;

$("div#smssend").html("Sending...");

$.ajax({

type: "POST",

url: "<?php echo $base_url; ?>/admin/sms",

data : dataString,

success: function(data) {

},

error: function(request, error) {

$("div.notice.sms").html("ERROR "+error+ "REQUEST "+request);

}

});

});

});

function smsStatus() {

var dataString = "smsaction=status&ajax=true";

$.ajax({

type: "POST",

url: "<?php echo $base_url; ?>/admin/sms",

data : dataString,

success: function(data) {

//data being false here indicates the process finished

if(data == false) {

clearInterval(smsInterval);

var basewidth = $("div.sms_progress_bg").width();

$("div.sms_progress_bar").width(parseInt(basewidth));

$("div.sms_progress_notice").html(parseInt(100) + "% Complete");

smsSending = false;

$("div#smssend").html("Send To <?php echo $options["smsTotal"]; ?> Recipients");

} else {

var pcomplete = parseFloat(data);

$("div.sms_progress_bg").show();

var basewidth = $("div.sms_progress_bg").width();

$("div.sms_progress_bar").width(parseInt(basewidth * pcomplete));

$("div.sms_progress_notice").html(parseInt(pcomplete * 100) + "% Complete");

}

},

error: function(request, error) {

$("div.notice.sms").html("ERROR "+error+ "REQUEST "+request);

}

});

}

+0

也许我不清楚,具体细节并不重要,2个Ajax调用,一个启动一个过程需要一两分钟,并发送一堆电子邮件或短信,另一个Ajax调用,可以获取已发送的消息数量,或百分比或其他。在进程调用结束之前,状态调用似乎不会发生。这就是我想要解决的问题。 –

2011-04-22 13:40:02

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值