您好
哈哈,我刚解决了一个这样的问题如果直接for然后ajax,肯定是不行的因为ajax是异步调用,for循环都循环完了,ajax说不定才执行了第一个调用当然用同步调用的方式可以解决,但同步会阻塞浏览器,时间长的话,像死机一样的效果下面,给你我的解决方法,同步和异步的,我使用的后面一种(调用jQuery库后)/*
//开始群发此方法因为会阻塞浏览器,在帐号较多的情况下,使浏览器出现“假死”现象,所以放弃
function Send() {
var email, userName;
var magazineId = $("#magazineId").val();
var objTable = $(".zebraTable").find("tr");
var usersCount = objTable.length - 2;//获取帐号数,去除表头和表尾各占的一行
var mailColumn = 1;//email所在列的索
objTable.each(function(i) {
if(i > 0 && i <= usersCount) {
email = $(this).find("td").eq(1).text();
userName = $(this).find("td").eq(2).text();
//alert(email);
$.ajax({
type: "POST",
url: "Send.asp",
data: "Email=" + email + "&UserName=" + userName + "&MagazineId=" + magazineId,
async: false,
timeout: 300000,
success: function(msg) {
if(msg == 1) {
SendSuccess(i);
} else {
SendFailure(i);
}
},
error: function() {SendFairlure(i);}
});
} else if(i == usersCount + 1) {
$(this).find("input").attr("disabled", "")
}
});
}
*/答案补充
//开始群发
function Send(i) {
var email, userName;
var magazineId = $("#magazineId").val();
var objTable = $(".zebraTable");
var usersCount = objTable.find("tr").length - 2;//获取帐号数,去除表头和表尾各占的一行
var mailColumn = 1;//email所在列的索
if(i == null) {
i = 1;
}答案补充
if(i > 0 && i <= usersCount) {
Sending(i);
email = $(objTable).find("tr").eq(i).find("td").eq(1).text();
userName = $(objTable).find("tr").eq(i).find("td").eq(2).text();
$.ajax({
type: "POST",
url: "Send.asp",
data: "Email=" + email + "&UserName=" + userName + "&MagazineId=" + magazineId,
timeout: 120000,//邮件发送超时设置,单位:毫答案补充
success: function(msg) {
if(msg == 1) {
SendSuccess(i);
} else {
SendFailure(i);
}
},
error: function() {SendFairlure(i);},
complete: function() {
i += 1;
Send(i);//发送完成以后,调用自身函数发下一封
}
});
}
if(i == usersCount + 1) {
$(objTable).find("tr").find("input").attr("disabled", "")
}
}答案补充
//邮件发送中
function Sending(i) {
var objTd = $(".zebraTable").find("tr").eq(i).find("td");
objTd.eq(5).html("<span class='yellow'>发送中...</span>");
objTd.eq(6).html("<img src='Images/Space.gif' alt='正在发送' class='sending' />");
}//邮件发送成功
function SendSuccess(i) {
var objTd = $(".zebraTable").find("tr").eq(i).find("td");
objTd.eq(5).html("<span class='green'>成功</span>");
objTd.eq(6).html("<img src='Images/Space.gif' alt='发送成功' class='success' />");
}答案补充
//邮件发送失败
function SendFailure(i) {
var objTd = $(".zebraTable").find("tr").eq(i).find("td");
objTd.eq(5).html("<span class='red'>失败</span>");
objTd.eq(6).html("<img src='Images/Space.gif' alt='发送失败' class='failure' />");
}//邮件发送超时,暂未启用此功能,当前超时以失败处理
function SendTimeout(i) {
var objTd = $(".zebraTable").find("tr").eq(i).find("td");
objTd.eq(5).html("<span class='purple'>超时</span>");
objTd.eq(6).html("<img src='Images/Space.gif' alt='发送超时' class='timeout' />");
}答案补充
效果示例图片
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试