关于由ajax返回的数据在for循环中只能取到最后一个数的问题
以上是来自后台的数据格式。从数据中可以看出,里面包含两个商品,每个商品价格分别为:1.98,13.60。这里我要计算两个商品的总价格,但是通过for循环只能取到最后一个价格,也就是13.60。代码如下:
1 //这段代码在ajax发送请求成功后的回调函数中执行 2 //data为后台传过来的数据 3 var data_str=eval("(" + data + ")"); 4 for(var i=0;i<data_str.length;i++){ 5 jsonVal=eval("(" + data_str[i] + ")"); 6 var total_price = 0; 7 total_price=parseFloat(jsonVal.goodsnewprice)+total_price; 8 } 9 console.log(total_price);
结果:
在网上查阅了一些资料,没有找到原因: 回调函数是在已经接收到全部响应数据的情况下才被调用,不存在数据正在返回和返回不完全的情况。 但是可以这样解决:将在for循环里的处理封装成一个单独的函数,然后在for循环里调用该函数。
1 //处理函数 2 function chuli1(jsonVal){ 3 var res=parseFloat(jsonVal.goodsnewprice); 4 return res; 5 } 6 //在for循环中调用 7 for(var i=0;i<data_str.length;i++){ 8 var jsonVal=eval("(" + data_str[i] + ")"); 9 total_price += chuli1(jsonVal); 10 } 11 console.log(total_price);
结果:
会继续找原因,希望有发现原因的小伙伴可以告知,共同学习。。。