2014-04-18 82 views
0

我想推入一个对象到一个jQuery $.each循环中的数组,但当我尝试将一个对象推入一个数组时,它不能正确存储并覆盖之前在数组中的内容。对象不能正确推入阵列

的代码看起来是这样的:

var ing = {}; 
var mData = []; 

$.post('find.php', {levels:levels}, function(res){ 
     var resData = $.parseJSON(res); 
     if (resData.success == true){ 

      var mName = resData.m_name; 
      var p = resData.p; 
      $.each(p, function(key,val){ 

       ing.name = val.name; 
       ing.weight = val.weight; 
       ing.i_count = val.i_total; 
       ing.l_count = val.l_total; 
       //console.log(ing); 
       mData.push(ing); 
       //console.log(mData); 
      }); 

     } 
    }); 
console.log(mData); 

ing变量显示我希望在循环,每次然而,当数据被压入数组的数组的第一个索引得到由覆盖用数据第二个指标,这导致了这样的事情。

{ name="tea", weight="250", i_count=26, l_count = 1},{ name="tea", weight="250", i_count=26, l_count = 1} 

所以我的问题是我把数据推入数组的方式有什么问题?

+0

什么返回find.php?也许你可以在每个循环之前发布resData的console.log。 – inye

回答

2

您在$.each方法之外声明了变量。这有效地覆盖每一次。 在$.each循环代码中声明它。

$.each(p, function(key,val){ 
    var ing = {} 
    ... 
    ... update ing variable