2017-02-17 51 views
0

沒有人真的回答了這個問題,但是究竟如何使用JavaScript來從php/mysql直接使用此JSON返回數據呢?無法訪問JSON數組中的元素

這裏是返回數據一旦我使用JSON.parse並將其保存到JavaScript變量obj

[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}] 

我已經試過了簡單obj.stuname但只返回undefined我已經試過很多次去了解它但我似乎無法使用這個數組。 任何人都可以幫忙嗎?

我也試過reObj = {"stu":obj};風格,但隨後只返回一個[目標對象]

所以請有人解釋一下?

+0

你如何從php獲得,分享你的ajax請求代碼呢? – C2486

回答

4

obj是json array,因此您必須使用其index訪問元素。

此外,您必須使用JSON.parse才能將json文本的string變成Javascript對象。

試試這個:

var stuname=obj[0].stuname; 

var obj='[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]'; 
 
var objParsed=JSON.parse(obj); 
 
console.log(objParsed[0].stuname);

如果你想迭代array,使用forEach方法。

var obj='[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]'; 
 
var objParsed=JSON.parse(obj); 
 
objParsed.forEach(function(item){ 
 
    console.log(item.stuname); 
 
});

+0

nope仍然說undefined:/ – Arkonsol

+0

此外,我使用JSON編碼從PHP並通過Json發送到Javascript,但它只是說,當檢索到的數據是完美的時候undefined – Arkonsol

+0

感謝兄弟這對我有很大的幫助。但是你如何在for循環中使用它? – Arkonsol

1
  1. 如果你正在通過AJAX從PHP這種反應。 請務必使用dataType作爲json以獲取json類型響應不是字符串。

  2. 否則,你需要解析這樣

    obj = JSON.parse(jsonStrFromPhp); 
    

JSON數據然後你就可以作爲獲取數據obj.stuname或OBJ [0] .stuname取決於你如何從PHP返回這樣{"stu":obj}或像這樣[{"stu":obj}]

+0

我得到了第二個。從我的PHP中的[{}]'。我似乎無法直接解析它,因爲如果我只解析它,它只是返回一個'[對象對象],[對象對象]'所以我不得不將它串起來,然後解析它,以得到我的迴應。但它竟然解決了我的問題 – Arkonsol

0

雖然我有一個偏頭痛......爲什麼我的代碼錯了原來,即使obj = JSON.parse(jsonStrFromPhp);只返回[object Object],[object Object] JavaScript實際上可以理解shins和retu我的變量...有多混亂。