我有一个像这样的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']);
}
}
问题是..警报始终未定义。我做错了什么?
答案 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'])