Javascript 处理多个ajax请求仅在收到警报时有效
我试图从一个页面中的许多列表向服务器发送数据,每个列表都触发ajax数据供PHP进一步处理。我的代码使用(class=dd)选择每个列表,并逐个发送ajax数据。当我在ajax成功后使用alert(response)时,这非常有效,删除此警报消息只会向服务器发送较少的列表(4个列表中只发送2个)。有什么想法吗Javascript 处理多个ajax请求仅在收到警报时有效,javascript,jquery,ajax,jquery-nestable,Javascript,Jquery,Ajax,Jquery Nestable,我试图从一个页面中的许多列表向服务器发送数据,每个列表都触发ajax数据供PHP进一步处理。我的代码使用(class=dd)选择每个列表,并逐个发送ajax数据。当我在ajax成功后使用alert(response)时,这非常有效,删除此警报消息只会向服务器发送较少的列表(4个列表中只发送2个)。有什么想法吗 $('#submit_sorting').on('click', function() { var testEmail = /^[A-Z0-9._%+-]+@([A-Z0
$('#submit_sorting').on('click', function() {
var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
if (testEmail.test($('#user_email').val()) || $('#user_email').val()==""){
$('[class=dd]').each(function(){
var data = $(this).nestable('serialize');
var dataJson = JSON.stringify(data);
console.log('sent '+JSON.stringify(data));
var response = ajaxx(data);
alert(response);
});
}
else
{
alert('enter valid email address');
}
});
下面是ajax代码
function ajaxx(data){
return $.ajax({
type: "POST",
url: 'cardsorting/update',
data: {
'new_order': data,
'user_comments':$('#user_comments').val(),
'user_email':$('#user_email').val(),
'_token':$('meta[name="_token"]').attr('content')
},
success: function(data){
if(data=='dataissaved'){
console.log('came here '+$(location).attr('href'));
}
else
{
console.log('received '+JSON.stringify(data));
}
},
error: function (data) {
alert('Could not connect to controller');
}
});
}
下面是它最终的工作原理,我没有为每个选择发送多个ajax请求,而是将它们收集到一个数组中,然后将其ajax到后端php
$('#submit_sorting').on('click', function() {
var sorting_array = new Array();
var testEmail = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
var flag = false;
if (testEmail.test($('#user_email').val()) || $('#user_email').val()==""){
$('[class=dd]').each(function(){
var data = $(this).nestable('serialize');
sorting_array.push(data);
console.log('sent '+JSON.stringify(data));
});
flag = true;
}
else
{
alert('enter valid email address');
}
if(flag){
ajaxx(sorting_array);
console.log(JSON.stringify(sorting_array));
}
});
试试这个$.ajax({…async:false});$。ajax是异步的。。。了解如何编写异步代码,它说的
async:false
总是有效的,它在firefox和chrome中已经被弃用了好几个月了为什么不在“cardsorting/update”处理程序中发送数组和进程中的所有数据?