关于由ajax返回的数据在for循环中只能取到最后一个数的问题

时间:2023-03-10 00:28:28
关于由ajax返回的数据在for循环中只能取到最后一个数的问题

关于由ajax返回的数据在for循环中只能取到最后一个数的问题

关于由ajax返回的数据在for循环中只能取到最后一个数的问题

以上是来自后台的数据格式。从数据中可以看出,里面包含两个商品,每个商品价格分别为:1.98,13.60。这里我要计算两个商品的总价格,但是通过for循环只能取到最后一个价格,也就是13.60。代码如下:

 //这段代码在ajax发送请求成功后的回调函数中执行
//data为后台传过来的数据
var data_str=eval("(" + data + ")");
for(var i=0;i<data_str.length;i++){
jsonVal=eval("(" + data_str[i] + ")");
var total_price = 0;
total_price=parseFloat(jsonVal.goodsnewprice)+total_price;
}
console.log(total_price);

结果:

关于由ajax返回的数据在for循环中只能取到最后一个数的问题

在网上查阅了一些资料,没有找到原因: 回调函数是在已经接收到全部响应数据的情况下才被调用,不存在数据正在返回和返回不完全的情况。 但是可以这样解决:将在for循环里的处理封装成一个单独的函数,然后在for循环里调用该函数。

 //处理函数
function chuli1(jsonVal){
var res=parseFloat(jsonVal.goodsnewprice);
return res;
}
//在for循环中调用
for(var i=0;i<data_str.length;i++){
var jsonVal=eval("(" + data_str[i] + ")");
total_price += chuli1(jsonVal);
}
console.log(total_price);

结果:

关于由ajax返回的数据在for循环中只能取到最后一个数的问题

会继续找原因,希望有发现原因的小伙伴可以告知,共同学习。。。