JSON/PHP无法正确解析

Cur*_*ewe 1 javascript php json

首先我要指出问题,基本上在我的$.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);
        }
});
Run Code Online (Sandbox Code Playgroud)

我目前的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);
Run Code Online (Sandbox Code Playgroud)

只是总结了整个事情了,使用时alert()player_id返回undefined其中很显然,我希望它返回正确的值

Mar*_*c B 6

你没有发回一个多级数组,你发送的数组只有两个元素.例如你的JS代码应该是

    success: function(data){
               var name = data['name'];
               var player_id = data['id'];
             }
Run Code Online (Sandbox Code Playgroud)

如果DB查询IS应该发回的多条记录,那么你错了构建它:

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

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