2011-10-15 46 views
0

我有一個這樣的PHP命令。PHP創建一個JSON,Ajax無法讀取

$query = "SELECT * FROM $table WHERE user_id = 0"; 
    $results = mysql_query($query)or die(mysql_error()); 
    while($row = mysql_fetch_assoc($results)){ 

    $values []= $row; 

    } 
    echo json_encode($values); 

這就產生了一個JSON數組這樣

[{"id":"1","name":"amazon.com","url":"http:\/\/amazon.com","time":"5","credits":"0","user_id":"0"},{"id":"2","name":"google.com","url":"http:\/\/google.com","time":"4","credits":"0","user_id":"0"}] 

此JSON陣列比變爲一個不同的網頁上的Ajax響應文本的一部分。

var ajaxd = ajax(); 
     ajaxd.onreadystatechange = function(){ 

     if(ajaxd.readyState == 4){ 
     var nse = eval('('+ajaxd.responseText+')'); 
      alert(nse['url']); 
     } 
     } 

問題是......警報始終處於未定義狀態。我究竟做錯了什麼?

+0

什麼基本的調試秀 - 確實resposeText包含什麼?你有什麼錯誤嗎? –

+0

這與mysql無關。您可以使用從MySQL獲取的數據創建該數組,但在此之後,它完全是一個PHP數組。 –

回答

3

得到的json中最外面的包含結構是一個列表;這是有道理的,因爲從數據庫返回的大部分數據都是一堆行。你可能想訪問「網址」的第一行:

nse[0]["url"] 

或者,也許你真的需要做一些事情的每一行:

for (i = 0; i < nse.length(); ++i) 
{ 
    row = nse[i]; 
    alert(row['url']); 
} 
+0

作品! alsome謝謝Mr TokenMacGuy – mbejda

+1

Just TokenMacGuy很好; TokenMacGuy先生是我的父親〜_ ^ – SingleNegationElimination

2

你有一個數組包含一個對象,而不是一個普通的對象。

alert(nse[0]['url'])