仅当最后一个 AJAX 请求在 JavaScript 中完成时,才输入 next 进行迭代
enter next for iteration only when the last ajax request complete in javascript
我有一个数组noti_array它有两个元素,noti_array[0]='meghan&3',noti_arra[1]='tylor&5',用户名和数字由'&'连接,在每次迭代中,我想将用户名发送到ajax请求
for(var i=0;i<noti_array.length;i++)
{
var mesg_array = new Array();
mesg_array=noti_array[i].split('&');
who_sent=mesg_array[0]; //first iteration, meghan
sent_num=mesg_array[1]; //3
//send the user name to a ajax request
$.ajax({
url:'getLastCon.php',
method:'post',
data:{who_sent:who_sent},
success:function(data){
alert(who_sent);
}
});
}
上面的这段代码不会提醒梅根和泰勒,相反,它会提醒两次泰勒,如果我在 ajax 请求后使用"break",它只会提醒梅根一次,我认为这可能是循环进入下一次迭代,即使 ajax 请求还没有完成
看起来who_sent
可能是一个全局变量。在这种情况下,由于 AJAX 调用的异步性质,警报将触发上次分配的值 who_sent
。使who_sent
成为局部变量或通过添加 var: var who_sent = mesg_array[0];
来添加另一个变量。
编辑:以上关于变量如何在循环中持久化是错误的。对于不准确的信息,我很抱歉。以下代码将执行您想要的操作:
for( var i=0 ; i < noti_array.length ; i++ ) {
var mesg_array = noti_array[i].split('&');
who_sent = mesg_array[0]; //first iteration, meghan
sent_num = mesg_array[1]; //3
(function(who) {
//send the user name to a ajax request
$.ajax({
url: 'getLastCon.php',
method: 'post',
data: { who_sent:who },
success: function(data) {
alert(who);
}
});
})(who_sent);
}
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 可以't让我的if语句处理js中的html表单输入
- 名称输入的索引
- 如何编写HTML输入的JS内联
- 要求输入在数据列表中
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 如何将输入(type=text)从html表单传递到javascript函数
- 单击jquery清除输入值
- 而循环只设置php中输入字段中的第一个值
- 在输入字段中将最小金额设置为
- jQuery自定义验证比较多个输入的序列
- Sails.js:同时发布文本输入和一个文件
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- ES6生成器:.next()的输入值
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- 在使用next()填充时显示下一个输入字段
- 仅当最后一个 AJAX 请求在 JavaScript 中完成时,才输入 next 进行迭代
- 如何检测“enter”键在输入中按下“next”键;在ie8 -10中使用JavaScript的行为