1

最初に問題を指摘します。基本的に私のコード内では、使用しているPHPコード$.each(data, function (i, v) {からエコーされた一連の変数が返されますが、これらの変数またはそれらを配置しようとすると、多くの方法を試したことを示しています。実際にデータを表示しますが、常に返されます。私のコードは私の観点からは有効であると思われるため、理由はわかりません。json_encodealert()undefinedundefined

私が持っている現在の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_idundefined

4

1 に答える 1

6

マルチレベルの配列を送り返すのではなく、要素が 2 つだけの配列を送信します。たとえば、JS コードは次のようになります。

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

その DB クエリが複数のレコードを送り返すことになっている場合は、間違って作成しています。

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 に答える