jQuery when()不适用于多个ajax调用

时间:2016-02-09 06:08:44

标签: javascript jquery ajax

我有一个JavaScript方法,我们必须调用多个ajax调用,并在所有可用时使用该数据。在这种情况下,我们使用了jQuery。但是,当方法与单独执行时(jQuery调用)不同时,使用ajax收到的数据。

以下是方法调用和收到的数据。

每当我调用相同的ajax方法时,数据都包含所有元素,但是当我使用when方法调用它时,它被包装在一个数组中。您能否告诉我遗漏的内容或如何提取数据。

  function retailerProfile(){
    $("#retailerProfileBody").empty();
    $('#retailerProfile').modal('show');


    $.when($.ajax({
                url: 'products/getAllProductsByCategory.json',
                dataType: "json",
                type: "POST",
                data: {


                },
                beforeSend: function(xhr) {
                    xhr.setRequestHeader("Accept", "application/json");
                    xhr.setRequestHeader("Content-Type", "application/json");
               }
               }), 
               $.ajax({
                   url: 'useroperation/findRetailerByUserName.json',
                   dataType: "json",
                   type: "POST",
                   data: {


                   },
                   beforeSend: function(xhr) {
                       xhr.setRequestHeader("Accept", "application/json");
                       xhr.setRequestHeader("Content-Type", "application/json");


          }
                })).done(function( products,data){
                console.log( "user :"+data.user);
                console.log( "data :"+data);
    console.log( "products :"+products);
    var profile = '<div id="'+data.id +'">'
                +'<div class="well well-sm">'
                +'<div class="row">'
                +'<div class="col-sm-4 col-md-6"><h4>'+data.user.firstName+' '+data.user.lastName+'</h4>'
                +'<address>'
          +'<strong>'+data.shopName+'</strong><br/>'
          +data.address.addrLine1+'<br/>'
          +data.address.addrLine2+'<br/>'
          +data.address.city+'<br/>'
          +data.address.state+'<br/>'
          +'<abbr title="Phone">P:</abbr> '+((!data.user.mobile)?'':data.user.mobile)
                +'</address>'
                +'<p>'
                +'<i class="glyphicon glyphicon-envelope"></i> '+data.user.email
                +'<br/><i class="glyphicon glyphicon-map-marker"></i> '+data.address.locality
                +'</p>'
                +'</div>';
                profile+='<div class="col-sm-4 col-md-6"><h4>Products</h4><br/>'
                +'<ul class="list-group">';
                $.each(data.products,function(k,product){
                profile+='<li class="list-group-item">'+ product.productName +'('+product.category +')</li>';
                });
                profile+='</ul>'
                +'</div>'
                +'</div>'
                 +'</div>'
           +'</div>'
           ;


        $("#retailerProfileBody").append(profile);
    });


    }
  

控制台日志:数据:[对象对象],成功,[对象对象]产品   :[object Object],[object Object],[object Object],[object   对象],[对象对象],[对象对象],[对象对象],[对象   对象],成功,[对象对象]

enter image description here

1 个答案:

答案 0 :(得分:0)

不同之处在于功能行为何时。在函数中,每个参数都是一个具有以下结构的数组:[data,statusText,jqXHR]。