2013-12-19 31 views
0

我越來越undefined在我的console.log(),在console.log(item.ResponseId);這又引起我的$ ajax.done()函數失敗,因爲價值需求作爲初始呼叫的返回值。另外,console.log(msg.ResponseId);正如預期的那樣輸出一個整數。我得到一個未定義的錯誤在我的JS,但不知道爲什麼

var rdetail = new Array(); 
     $('.choiceinput').each(function (i, obj) { 
      rdetail.push({ 
       "ResponseId": 0, 
       "ResponseDetailVal": $(this).val(), 
       "QuestioChoicesId": $(this).attr('id') 
      }); 
     }) 


     $.ajax({ 
      type: "POST", 
      url: "/Forecaster/userResponse/", 
      data: data 
     }).done(function (msg) { 
      console.log(msg.ResponseId); 
      for (var item in rdetail) { 
       item.ResponseId = msg.ResponseId; 
       console.log(item.ResponseId); 
      } 
      console.log("Last: "); 
      console.log(rdetail); 
      $.post('/Forecaster/userResponseDetails/', 
        JSON.stringify(rdetail), 
       null, 'application/json'); 
     }) 
+0

@adeneo:'item'是一個字符串,'rdetail'是一個數組。 –

回答

5

當你寫for(item in rdetail)rdetail由一個分配給item之一。由於鍵是一個字符串,因此將屬性賦給它什麼都不做*。

您是否意思rdetail[item].ResponseId

*它實際上包裝在一個String()對象的原語字符串,屬性分配給它,然後將其丟棄

+0

難道你不應該在數組中使用'for..in'嗎? –

+0

@RocketHazmat不錯,但這是最好的評論,不是回答問題本身的一部分:) –

+1

好吧,描述正確的方式來遍歷數組將是*有用*。 –

相關問題