处理多个ajax请求仅在收到警报时起作用

时间:2015-12-07 07:19:19

标签: javascript jquery ajax jquery-nestable

我正在尝试从页面中的许多列表向服务器发送数据,每个列表都会触发PHP的ajax数据以进一步处理。我的代码使用(class = dd)选择每个列表并逐个发送ajax数据。当我在ajax成功之后使用alert(响应)时,这非常有效,删除此警报消息只会向服务器发送较少数量的列表(只有2个列表从4中发送)。有什么想法吗?

 $('#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');
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

这里它最终是如何工作的,而不是为每个选择发送多个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)); 
    }

});