2011-09-05 147 views
1

我是JSON和AJAX的新手,希望有人能幫助我。javascript json對象解碼

對PHP腳本使用AJAX請求時,我從SQL數據庫獲取一些數據 - >編碼爲JSON字符串,並將其發送回調用JavaScript。

這是數據我回來

Array[{"categoryName":"Apartments For Rent"},{"categoryName":"Apartments For Sale"},{"categoryName":"Room For Rent (Shared)"},{"categoryName":"Paying Guest"},{"categoryName":"Office\/Shop\/Commercial Space"},{"categoryName":"Land"},{"categoryName":"Parking Spots"},{"categoryName":"Other"}] 

我怎樣才能獲得單獨從這個「類別名稱」值(在while循環)?

編輯:PHP代碼發送JSON數據

$arr = array(); 
    while($row = mysql_fetch_array($temp,MYSQL_ASSOC)) 
    { 
     $arr[]=$row; 
    } 
    echo json_encode($arr); 

感謝您的幫助
ANKIT

+0

這似乎不是有效的JSON。 'Array'從哪裏來? –

+0

@Felix:添加了生成JSON字符串的PHP代碼 – ankit

+0

看來你正在做另一個'echo'或者你只是偶然包含'Array'。確保它不在響應中。 –

回答

0

,你可以通過它們的索引數組和訪問單個元素循環:

for (var i = 0; i < data.length; i++) { 
    alert(data[i].categoryName); 
} 
+0

'data.length'返回'290'。所以看起來返回的JSON對象被視爲一個字符串。 – ankit

+0

@ankit,嘗試解析它然後:'JSON.parse(data);'並且對這個函數的結果進行操作。 'json.parse'方法可以在'json2.js'中找到:https://github.com/douglascrockford/JSON-js –

+0

在刪除了流浪回聲統計建議後,現在就像一個魅力一樣! – ankit

1

使用eval()將其解碼爲JavaScript對象,然後循環播放它,但是您必須刪除「Array」開始在PHP端或使用JavaScript。

var jsonStr = '[{"categoryName":"Apartments For Rent"},{"categoryName":"Apartments For Sale"}]'; 
jsonObj = eval("("+jsonStr+")"); 
for(var i in jsonObj){ 
    categoryName = jsonObj[i].categoryName; 
} 

來自:http://www.json.org/js.html

+0

適用於jquery.parseJSON – ankit

+1

這並不重要,我剛剛看到沒有人顯示從字符串到對象使用的代碼,所以我以基本形式顯示它 – Shedokan

+0

謝謝!非常感謝 – ankit

0
i=0; 
do{ 
    alert(data[i].categoryName); 
    i++; 
} 
while(i<=data.length); 

如達林Dimitrov的說明,但在while循環。