未捕获的TypeError:无法读取未定义的属性“0”

时间:2011-03-23 07:34:12

标签: javascript jquery

我正在使用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);

2 个答案:

答案 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