我试图在用户点击按钮时进行2次ajax函数调用。
我有
$('.test').on('click', function(){
code.getCode();
code.getText();
})
code.prototype.getCode=function(){
var call=//call ajax
call.callback= function(data){
//parse return data
}
}
code.prototype.getText=function(){
var call=//call ajax
call.callback= function(data){
//parse return data
}
}
我只能进行1次ajax调用,只有1次ajax调用会返回数据。 我不知道如何解决这个问题。有任何想法吗?非常感谢!
答案 0 :(得分:2)
我不确定我是否理解正确,但我认为您正在寻找来自两个ajax调用的单个回调..
您应该使用 $.when.done 。见下文,
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){
/* a1 and a2 are arguments resolved for the
page1 and page2 ajax requests, respectively */
var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
if ( /Whip It/.test(jqXHR.responseText) ) {
alert("First page has 'Whip It' somewhere.");
}
});
不确定您是在寻找排序还是尝试进行1次回调。
答案 1 :(得分:0)
你也可以进行第一次ajax调用,成功调用第二次:
$('.test').on('click', function(){
var datastr = "your data";
$.ajax({
type: "POST",
url: "url",
data: datastr,
success: function(successMsg) {
//ajax done
if (/* not yet complete */) {
setTimeout(secondAjaxCall(),500);
} else {
secondAjaxCall();
}
}
});
});
答案 2 :(得分:0)
您可以在代码对象中保存每个返回(因为您在不同的上下文中,您必须解决“this”)。然后你可以使用第三个函数来检查数据对象是否被加载......并且一旦两者都存在就开始解析。
$('.test').on('click', function(){
code.getCode();
code.getText();
})
code.prototype.getCode=function(){
var call=//call ajax
var that = this;
call.callback= function(data){
//parse return data
that.codeData = data;
parseData();
}
}
code.prototype.getText=function(){
var call=//call ajax
var that = this;
call.callback= function(data){
//parse return data
that.textData = data;
parseData();
}
}
function parseData() {
if(!code.textData || !code.codeData) return;
... work with both
}