我正在使用jQuery进行ajax调用,如下所示。
$.ajax({
type: "POST",
url: "proc.php",
dataType: 'json',
data: dataString,
cache: false,
success: function(data){
alert(data.vote[0].line); //Where error shows
}
});
php页面返回echo json_encode($string);
,就像
"{ 'vote' : [{ 'line' : 'newline1', 'up' : '0', 'down' : '1'},
{ 'line' : 'newline2', 'up' : '4', 'down' : '1'}
]}"
当我运行它时,出现错误
上面在ajax调用中评论的行上的 Uncaught TypeError: Cannot read property '0' of undefined
任何人都可以帮我指出我做错了吗?
更新:
变量$string
生成如下
$comma = ",";
$success = mysql_query($query, $connection);
while($row = mysql_fetch_array($success)){
$voteUp = $row['voteup'];
$voteDwn = $row['votedwn'];
$vote .= $comma . "{ 'line' : '{$row['entryid']}', 'up' : '{$voteUp}', 'down' : '{$voteDwn}'";
$comma = ",";
}
$string = "{ 'vote' : [" . $vote . "]}";
echo json_encode($string);
答案 0 :(得分:5)
不使用PHP编写“jsoned”字符串,而是使用数组。 json_encode()
会做出神奇的
$return = array();
$success = mysql_query($query, $connection);
while ($row = mysql_fetch_array($success)) {
$return['vote'][] = array(
'line' => $row['entryid'],
'up' => $row['voteup'],
'down' => $row['votedown'],
);
}
echo json_encode($return);
答案 1 :(得分:3)
在最近的jQuery版本中,使用本机浏览器JSON解析方法而不是传统的eval()方法。严格的JSON 不支持单引号字符串,您的示例正在使用它。 如前所述,使用json_encode($ array)或手动修复JSON