1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > js等待ajax执行完 js等待方法执行完再执行

js等待ajax执行完 js等待方法执行完再执行

时间:2019-07-18 20:57:18

相关推荐

js等待ajax执行完 js等待方法执行完再执行

您好

哈哈,我刚解决了一个这样的问题如果直接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' />");

}答案补充

效果示例图片

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。