2009-11-20 40 views
0

我使用AJAX來獲取多維數組,這樣一個多維數組返回到AJAX,我該怎麼處理與AJAX的數據?我需要讀取多維數組中的所有值。我使用下面的代碼將數組返回給AJAX。如何使用AJAX讀取PHP文件返回的數組中的所有值?

$resultset=array(); 
while($row=mysql_fetch_assoc($result)) 
{ 
    $resultset[]=$row; 
} 
print_r($resultset); 

如何使用AJAX讀取由PHP文件返回的數組中的所有值?

回答

0

我會親自使用JSON了點。例如。在PHP而不是print_r中使用json_encode($ resultset)。在JavaScript中使用一些支持JSON的庫(jquery/mootools會這樣做)來解碼JSON。這就對了。

1

PHP

echo json_encode($resultset); 

JS:

var array = json_decode(input); 

json_decode在JavaScript中默認是不支持的,你可以用一個框架來實現此功能。 E.g:原型:

var array = input.evalJSON(); 
+1

如果downvotes了評論這將是最有幫助的。現在我不知道答案的哪一部分被某人認爲是錯的。 – markus 2009-11-20 11:22:13

+0

我可以使用什麼框架? – Steven 2009-11-20 12:38:30

+0

Steven:在我的例子中是原型,但您的選擇取決於您的需求。 jQuery如今非常流行。 – erenon 2009-11-20 14:22:35

3

雖然可以解析的print_r的JavaScript中的輸出,這將是相當愚蠢這樣做時其他數據格式強大的庫已經存在兩種語言。

使用JSON(在頁面底部的鏈接將帶你到圖書館在PHP中生成並使用JavaScript讀取它)。

+0

jQuery有一個很好的內置函數,如下所示:'$ .getJSON(url,data,callback)'。 api.jquery.com上的詳細信息和示例。 – 2009-11-20 11:57:49

2

是的,你可以使用JSON(JavaScript對象符號)到跨平臺傳輸數據。如果您的數據是這樣的:

<?php 
    $a = array(); 
    $a[ "foo" ] = array(); 
    $a[ "bar" ] = array(); 
    $a[ "foo" ][ "foo-1" ] = 1; 
    $a[ "foo" ][ "foo-2" ] = 2; 
    $a[ "foo" ][ "foo-3" ] = 3; 
    $a[ "foo" ][ "foo-4" ] = array("yada", "yada"); 
    $a[ "bar" ][ "bar-1" ] = 1; 
    $a[ "bar" ][ "bar-2" ] = 2; 
    $a[ "bar" ][ "bar-3" ] = 3; 
    $a[ "bar" ][ "bar-4" ] = array("blah", "blah"); 
?> 

那麼它json_encode($ A)將返回:

{"foo":{"foo-1":1,"foo-2":2,"foo-3":3,"foo-4":["yada","yada"]},"bar":{"bar-1":1,"bar-2":2,"bar-3":3,"bar-4":["blah","blah"]}} 

您可以使用JavaScript的eval函數這個字符串轉換成對象和迭代它就像你會迭代一個php數組。

+0

+1用於顯示JSON的外觀。正如David Dorward指出的那樣,www.json.org是一個很好的資源,更詳細地解釋了結構。 – 2009-11-20 12:01:55

+0

如果有人知道JavaScript中的(),[]和{}是什麼意思,學習JSON應該是小菜一碟! – 2009-11-20 12:06:27