2014-10-27 77 views
0

我想调用一个通用的ajax函数,它应该返回从PHP脚本返回的值。使用jQuery。然后。然后

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

阅读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 
    }); 
});