PHP创建了ajax无法读取的Json

时间:2011-10-15 21:00:14

标签: php ajax

我有一个像这样的php命令。

  $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响应Text的一部分。

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

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

问题是..警报始终未定义。我做错了什么?

2 个答案:

答案 0 :(得分:3)

生成的json中最外层的包含结构是一个列表;这是有道理的,因为从数据库返回的大多数数据都是一堆行。您可能想要访问第一行的“url”:

nse[0]["url"]

或许你真的需要对每一行做些事情:

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

答案 1 :(得分:2)

您有一个包含对象的数组,而不是普通对象。

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