2016-11-04 133 views
1

我在我的代碼中完成了一個ajax請求,它的效果很好。之後,我想只提取必要的信息並重新發布到另一個腳本。到現在爲止這裏是我的代碼:JSON解析後無法讀取未定義的屬性

$.ajax({ 
     type: "POST", 
       url: url, 
       data: {xhr_id: xhr_id}, 
       success: function (jsondata) { 

        var product_data = []; 

         for (var i = 0; i <= 3; i++) { 

         //alert(jsondata.products[i].product_description.toSource()); 

         product_data[i] = {}; 
         product_data[i]["product" + i] = jsondata.products[i].product_description; 

         //alert(product_data[i]["product" + i].toSource()); 
        } 
       }, 
       dataType: "json" 
     }); 

的問題是,無論是警報做工精細,顯示我想要的信息。但是,我收到一條錯誤消息:「Uncaught TypeError:無法讀取未定義的屬性'product_description',這會破壞腳本並阻止我執行其他任何操作。我做錯了什麼,有什麼想法?

+1

'jsondata.products [I] .product_description' - 你有一個硬編碼的環路長度的數據obvi少於那個長度。 – tymeJV

+0

@Phylogenesis - OP已經在做這件事。數組被聲明並被添加到'success'裏面。 – tymeJV

+0

@tymeJV真。我已刪除不正確的評論。 – Phylogenesis

回答

1

'product_description'of undefined「它意味着你試圖訪問未定義變量的屬性,這意味着」jsondata.products [i]「導致了由於索引超出範圍而發生的未定義值。許多記錄在jsondata 3或4中返回,檢查並調整for循環中的條件

0

$ .ajax的success()函數中的參數是一個字符串,必須通過解析函數才能生成json 。請參閱下面的代碼修改,但沒有測試

$.ajax({ 
     type: "POST", 
       url: url, 
       data: {xhr_id: xhr_id}, 
       success: function (jsondata) { 
        var oData; 
        try { oData=jQuery.parseJSON(jsondata) } 
        catch(err) { 
         alert("Problem parsing json string : " + jsondata) 
         return false 
        } 

        var product_data = []; 

         for (var i = 0; i <= 3; i++) { 

         //alert(oData.products[i].product_description.toSource()); 

         product_data[i] = {}; 
         product_data[i]["product" + i] = oData.products[i].product_description; 

         //alert(product_data[i]["product" + i].toSource()); 
        } 
       }, 
       dataType: "json" 
     }); 
相關問題