1

次のコードを取得して画面に何かを出力できないようです。JavaScript は私の得意分野ではありません。

これは、部屋のリストを出力するローカル ファイルを呼び出す JavaScript コードです。

$.getJSON('roomupdate.php?level=1&div=1&callback=json',function(res){
console.log(res.rooms.name[0]);
});

上記では、コンソールの最初の部屋の名前を確認しようとしているだけです。これが JSON 出力です (スクリプトが表示およびロードできることを確認できます)。

json(
{
        "rooms":
        [
            { "name" : "Bedroom" },
            { "name" : "Living Room" },
            { "name" : "Lounge" },
            { "name" : "Kitchen" }
        ]
})

誰かが私が間違っていることを提案できますか? コンソールで表示するには?

最後に、配列をループできますか?

4

3 に答える 3

2

JSON データにはオブジェクトroomsが含まれており、このオブジェクトには実際には配列が含まれています[]。したがって、配列内のデータにアクセスするには、インデックスを配置する必要がありますrooms

console.log(res.rooms[0].name);
于 2013-07-12T10:33:19.487 に答える
1

jQuery が JSONp を使用していることを認識し、コールバック関数に独自の名前を選択できるように、callback=?ではなく使用します。callback=json

$.getJSON('roomupdate.php?level=1&div=1&callback=?',function(res){
    //alert('Your name is '+res.rooms);

    console.log(res.rooms.name[0]);
});

詳細については、 http://api.jquery.com/jQuery.getJSON/#jsonpを参照してください。

編集:

もう一度見てみると、データへのアクセス方法を変更する必要があります。部屋はリストであり、各部屋には name プロパティがあるためですres.rooms.name[0]res.rooms[0].name

于 2013-07-12T10:28:14.577 に答える
0

これにより、部屋の配列がループされ、各部屋の名前がログに記録されます。

$.each( res.rooms, function( i, room ) {
    console.log( room.name );
});

それが機能しない場合は、コールバックの先頭 (console.log()現在呼び出しがある場所)に次のステートメントを追加します。

debugger;

開発者ツールを開いた状態でページをロード/実行すると、そのステートメントがあるデバッガーで停止します。これで、すべての変数を詳細に調べたり、式を試してその動作を確認したり、コードを 1 ステップ実行したりできます。

于 2013-07-12T10:31:08.803 に答える