JSON/PHP解析错误

JSON/PHP not parsing correctly

本文关键字:错误 PHP JSON      更新时间:2023-09-26

首先我会指出问题,基本上在我的$.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);

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

你不是在发送一个多级数组,你是在发送一个只有两个元素的数组。例如,你的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()代码应该开始工作,因为你正在发送回一个多维数组/对象。