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

使用callback=?而不是callback=json让 jQuery 知道您正在使用 JSONp 并且可以为回调函数选择它自己的名称。

$.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

编辑:

再看一遍,您将需要改变访问数据的方式。res.rooms.name[0]应该是res.rooms[0].name因为 rooms 是一个列表,每个房间都有一个 name 属性。

于 2013-07-12T10:28:14.577 回答
0

这将遍历房间数组并记录每个房间的名称:

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

如果这不起作用,则在回调的开头添加此语句(您console.log()现在可以调用):

debugger;

在开发人员工具打开的情况下加载/运行您的页面,它将在您拥有该语句的调试器中停止。现在您可以详细查看所有变量,尝试表达式以查看它们的作用,单步执行代码等。

于 2013-07-12T10:31:08.803 回答