Javascript 使用JSONP和我有';引用错误:未定义数据';
我在显示通过JSONP调用的JSON数据时遇到问题。我有一个通过URL跨域传递的复杂JSON文件,我是JSON和ajax的新手。我在这里关注了一篇JSONP文章,这篇文章非常有用。在回答完这个问题后,现在我尝试遍历JSON对象并在HTML页面中显示数据,我不打算去任何地方。数据未定义,我不确定我做错了什么:Javascript 使用JSONP和我有';引用错误:未定义数据';,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我在显示通过JSONP调用的JSON数据时遇到问题。我有一个通过URL跨域传递的复杂JSON文件,我是JSON和ajax的新手。我在这里关注了一篇JSONP文章,这篇文章非常有用。在回答完这个问题后,现在我尝试遍历JSON对象并在HTML页面中显示数据,我不打算去任何地方。数据未定义,我不确定我做错了什么: // Using LibCal and JSONP $.ajax({ url: "https://api2.libcal.com/1.0/room_bookings_nickname
// Using LibCal and JSONP
$.ajax({
url: "https://api2.libcal.com/1.0/room_bookings_nickname/?iid=3356&group_id=12306&key=92a47e5c854dee620cca071648c3fc41",
// The name of the callback parameter, as specified by the YQL service
jsonp: "callback",
// Tell jQuery we're expecting JSONP
dataType: "jsonp",
// Tell LibCal what we want and that we want JSON
data: {
q: "select Room name,booked timeslots,booking name from LibCal room bookings",
format: "json"
},
// Work with the response
success: function( response ) {
console.log( response ); // server response
}
});
$.each(data.bookings, function(index, element) {
alert(element.timeslots.room_name);
});
我希望这对更高级的用户来说是一个明显的修复:)这是因为您的
数据对象不存在。您所指的数据
键是传递给$.ajax
方法的对象上的一个键
您需要在success
回调中执行函数,才能使其有意义
$.ajax({
...
// keep all your original stuff
...
success: function( response ) {
var data = response;
$.each(data.bookings, function(index, element) {
alert(element.timeslots.room_name);
});
}
});
我是这样做的。您需要再上一层才能访问要循环的数组
var json_url = "https://api2.libcal.com/1.0/room_bookings_nickname/?iid=3356&group_id=12306&key=92a47e5c854dee620cca071648c3fc41"
$.ajax({
url: json_url,
crossDomain:true,
dataType:"jsonp"
}).done(function(response) {
// at the end of request
//Yours --->response.bookings
//Mine --->response.bookings.timeslots
//access the array to loop
var rooms = response.bookings.timeslots;
$.each(rooms, function(index, element) {
create_elem(element.room_name, index);
});
});
以下是JSFIDLE中的工作版本-
希望这有帮助。我没有看到问题的迭代部分。我的错,让我试一试。它在JSFIDLE中有效吗?我在那里遇到了真正的问题,所以我在括号里做了我自己的。@RyanCoolwebs是的,它是有效的。我刚刚更新了我的答案。它在JSFIDLE中工作,因为我允许跨域:true。谢谢@Devtye,你搞定了!我对我的代码进行了更新,我的控制台日志收回了我想要的数据列表。也没有意识到jsiddle有一个允许跨域的选项:true,但看起来jsiddle确实经历了最近的改头换面/升级。再次感谢。@RyanCoolwebs是的,jsFiddle是一个很好的工具,他们最近用它做了很多,欢迎您。我很高兴我能帮上忙:)啊,新手的错误。我现在已经修复了代码,所以不会抛出错误。现在的问题是向下查看JSON数据树-获取大量未定义的对象。@RyanCoolwebs发生在我们中最好的人身上。至于未定义的对象,如果这是您从服务器得到的-祝您好运。我不知道我能帮你什么忙