Javascript 来自多个ajax请求的总和值
我试图获取ajax请求返回的数据的总值,但它显示的是total:0,因为它在完成ajax请求之前执行totalRevJavascript 来自多个ajax请求的总和值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试图获取ajax请求返回的数据的总值,但它显示的是total:0,因为它在完成ajax请求之前执行totalRev var totalRev = 0; $.ajax({ type: "POST", url: "cloudmobi.php", data: {action: 'cloudmobi'}, dataType:'JSON', success: func
var totalRev = 0;
$.ajax({
type: "POST",
url: "cloudmobi.php",
data: {action: 'cloudmobi'},
dataType:'JSON',
success: function(response){
document.getElementById('cloudmobi').innerHTML = response.cloudmobi;
console.log(response.cloudmobi);
var cloudmobi = parseInt(response.cloudmobi);
console.log('CLOUDMOBI:'+cloudmobi);
totalRev += cloudmobi;
}
});
$.ajax({
type: "POST",
url: "mobusi.php",
data: {action: 'mobusi'},
dataType:'JSON',
success: function(response){
document.getElementById('mobusi').innerHTML = response.mobusi;
console.log(response.mobusi);
var mobusi = parseInt(response.mobusi);
totalRev += mobusi;
console.log('MOBUSI:'+mobusi);
}
});
$.ajax({
type: "POST",
url: "appnext.php",
data: {action: 'appnext'},
dataType:'JSON',
success: function(response){
document.getElementById('appnext').innerHTML = response.appnext;
console.log(response.appnext);
var appnext = parseInt(response.appnext);
totalRev += appnext;
console.log('APPNEXT:'+appnext);
}
});
console.log('TOTAL:'+totalRev);
我不想使用异步,因为这里使用ajax的全部目的是快速加载站点,然后动态加载数据。最好在一个请求中发送所有数据,这样您就可以在服务器上进行求和,并在响应中的单个属性中发送数据
不管出于什么原因,假设您不能这样做,那么您可以存储来自AJAX请求的所有承诺,然后在所有请求完成并将其值添加到数组中后执行代码。然后可以对数组求和。大概是这样的:
var值=[];
var承诺=[
$.ajax({
//ajax设置。。。
成功:函数(){
push(parseInt(response.cloudmobi),10);
}
}),
$.ajax({
//ajax设置。。。
成功:函数(){
push(parseInt(response.mobusi),10);
}
}),
//请求。。。
];
$.when.apply(这个,承诺).done(函数(){
var sum=值。减少(函数(a,b){
返回a+b;
}, 0);
//在这里使用sum。。。
});
jQuery“”解决了您的问题:
$.when( d1, d2 ).done(function ( v1, v2 ) {
console.log( v1 ); // "Fish"
console.log( v2 ); // "Pizza"
});
所有的数据都来自糟糕的api,加载时间超过8秒,每个api都有一个php文件,使用ajax请求数据的速度要快得多,我现在就试试这个。