2009-10-12 64 views
1

我的問題:我如何解析一個json數組?解析包含sql數組的json數組

我發送這樣的:

$data= mysql_fetch_array($r); 
header('Content-type: application/json'); 

?>    
{ 
    "check": "<?php echo $check?>", 
    "productcode": "<?php echo $code?>", 
    "values": [<?php echo $data?>] 
} 
<?php 

在阿賈克斯我做這個單一數值的,如果我想訪問數組我做這樣的事,工作正常

success: function(data,textStatus){ 
    //return values 
    identification=data.check; 

我得到undefined

value=data.values[1]; 

我在做什麼錯?

+0

葉赫,昨天聽說 我真的不想得罪任何人。 對不起,我從來沒有注意到左邊的那些東西。從現在開始我會這樣做。起初我真的不知道爲什麼我會冒犯任何人,因爲我總是說謝謝。 – Richard 2009-10-12 12:39:32

回答

1

您需要編碼您的數組作爲JSON得到JSON,太:

{ 
    "check": "<?php echo $check?>", 
    "productcode": "<?php echo $code?>", 
    "values": [<?php echo json_encode($data); ?>] 
} 

最簡單的方法可能是把一切都在一個PHP數組並將其序列化爲JSON:

$output = array(
    "check" => $check, 
    "productcode" => $code, 
    "values" => $data 
); 

echo json_encode($output); 

然後您可以確定它正在被正確編碼。

+0

謝謝,你可以評論mysql_NUM,我仍然可以通過名稱獲取值,然後,在Ajax成功函數。 – Richard 2009-10-12 12:29:51

+0

您可以使用返回關聯數組的mysql_fetch_assoc。這意味着,您可以通過JavaScript中的名稱(而不是其索引)訪問行中的列。只要檢查結果,然後你會看到它的作用。 – Daff 2009-10-12 12:53:28

+0

對於msql_fetch_array,關聯是默認的,因爲我通過名稱獲得了結果,或者我從@RC獲得了下面的註釋。 – Richard 2009-10-12 14:21:00

0
$data= mysql_fetch_array($r, MYSQL_NUM); 

可以解決問題。

這將有助於讓你在AJAX部分

+0

那麼它是什麼知道,一個asociative? 是關聯不好解析? – Richard 2009-10-12 12:24:41

+0

根據文檔,這是關聯和num – 2009-10-12 13:03:20

1

試試這個:

$data= mysql_fetch_array($r); 
header('Content-type: application/json'); 

$json = array(
    'check' => $check, 
    'productcode' => $code, 
    'values' => $data 
    ); 

print json_encode($json); 

它比手動打印JSON更整潔。 json_encode將PHP數組轉換爲json字符串。