2017-06-22 205 views
1

我在控制檯中發現錯誤,而我試圖從json數據中獲取特定值。這是錯誤:如何從反應中的json數據獲取特定值

'Uncaught TypeError: Cannot read property 'processen_id' of undefined'

這裏是我的代碼:

$.get("/getProces", function (data) { 
     if (data.error) { 
     } else { 
      for (var i = 0; i <= data.message.length; i++) { 
       var obj = data.message[i] 
       console.log(obj.processen_id) 
      } 
     } 
    }) 
} 

這是我所得到的,當我登錄(數據):

console.log(data)

+0

您是否嘗試過記錄'data'和'data.message'來看看裏面有什麼?很明顯,'message [i]'不存在 – atomrc

回答

1

你有一個錯誤您的代碼在for循環中

<= instead of <

$.get("/getProces", function (data) { 
      if (data.error) { 
      } else { 
       for (var i = 0; i < data.message.length; i++) { 
        var obj = data.message[i] 
        console.log(obj.processen_id) 
       } 
      } 
     }) 
    } 
+0

謝謝,它幫助^^ – AndyAsmo97

1

錯誤消息表示obj未定義。這意味着,data.message[i]得到一個未定義的值。問題在於循環。你會得到一個大於數組的i。更改<=<

for (var i = 0; i < data.message.length; i++) { 
    var obj = data.message[i] 
    console.log(obj.processen_id) 
} 
+0

謝謝,它幫助^^ – AndyAsmo97

0

指數超出範圍:for (var i = 0; i <= data.message.length; i++) {應該for (var i = 0; i < data.message.length; i++) {代替。

您還可以優化你的代碼是這樣的:

$ 
    .get("/getProces") 
    .then((res) => res.error ? Promise.reject(res) : Promise.resolve(res)) 
    .then((data) => { 
    for (var i = 0; i < data.message.length; i++) { 
     var obj = data.message[i] 
     console.log(obj.processen_id) 
    } 
    })