使用jQuery .when .then

时间:2014-10-27 05:50:13

标签: javascript jquery ajax

我试图调用一个常见的ajax函数,它应该返回从PHP脚本返回的值。

function ajaxCall(url, data, returnType) {
  successData = 0;
  $.when(
    $.ajax({
      type: "POST",
      url: url,
      data: data,
      dataType: returnType,
      success: function(data) {
        successData = data;
      }
    })
  ).done(function(){
    return successData;
  });
  return successData;
}

在文档加载时调用此函数两次:

$(document).ready(function() {    
  $.when(
    ajaxCall("posts/sales.php", "monthly=Call1", "json", "as"),
    ajaxCall("posts/sales.php", "monthly=Call2", "json", "as")
  ).then(function() {
    // make changes in some table.
  });
});

但是,基于此,ajax是asyc,then()部分在when()完成之前执行。 我想要的是没有等待页面加载,我希望根据从ajax调用返回的内容更改表中的值。

PS。如果我可以将ajaxCall函数的返回值存储在某个变量中,那就更好了。

1 个答案:

答案 0 :(得分:1)

阅读jQuery.when()

function ajaxCall(url, data, returnType) {
    return $.ajax({
        type: "POST",
        url: url,
        data: data,
        dataType: returnType,
    });
}

$(document).ready(function() {
    $.when(
        ajaxCall("posts/sales.php", "monthly=Call1", "json", "as"),
        ajaxCall("posts/sales.php", "monthly=Call2", "json", "as")
    ).then(function(resultFromFirstCall1, resultFromSecondCall1) {
        //Do something with result 1 and 2
    });
});