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

关于由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);

 

结果:

 

 

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

posted @ 2016-07-28 22:37  destinyruru  阅读(2905)  评论(0编辑  收藏  举报