1

首先我会指出这个问题,基本上在我$.each(data, function (i, v) {的代码中,它返回了一堆变量,这些变量是从正在使用的PHP代码中回显的,json_encode但是当尝试放置这些变量甚至alert()它们时,它表明undefined我已经尝试了很多方法来实际上显示数据,但它总是返回undefined,我不知道为什么,因为我的代码在我看来是有效的。

我拥有的当前javascript代码如下

$.ajax({
        url: "functions/ajax.php",
        data: "func=auto",
        type: "GET",
        dataType: "json",
        success: function(data){
                $.each(data, function (i, v) {
                            var name = v['name'];
                            var player_id = v['id'];
                            alert(player_id);
                });
        },
        error: function (jqXHR, textStatus, errorThrown){
            console.log('Error ' + jqXHR);
        }
});

我目前的PHP代码如下

$res = $DB->Query("SELECT * FROM `inventory` WHERE `account_id` = '$_SESSION[ID]'");
$data = array();
while($player = $DB->fetch_assoc()) {   
        $data['name'] = $player['name'];
        $data['id'] = $player['player_id'];
}
header('Content-type: application/json');
echo json_encode($data);

总结一下,当使用alert()player_id返回undefined时,显然我希望它返回正确的值

4

1 回答 1

6

您不是在发送一个多级数组,而是发送一个只有两个元素的数组。例如你的 JS 代码应该是

    success: function(data){
               var name = data['name'];
               var player_id = data['id'];
             }

如果该数据库查询应该发回多条记录,那么您构建它是错误的:

while($player = $DB->fetch_assoc()) {   
   $data[] = array('name' => $player['name'], 'id' => $player['player_id']);
}
echo json_encode($data);

然后你的$.each()代码应该开始工作,因为你正在发回一个多维数组/对象。

于 2013-03-13T21:52:58.900 回答