我需要使用以下代码遍历通过JSON获取的数据:
setInterval(function() {
console.log("running");
$.ajax({
type : 'get',
url : 'data.txt',
dataType : 'json',
success : function(response) {
console.log(response.bookings) // returns undefined
$.each(response.bookings, function(index, booking) {
sc.status(booking.seat_id, 'unavailable');
console.log(booking.seat_id); // returns nothing
});
}
});
}, 3000); //every 3 seconds
数据当前的格式如下:
[{
"bookings": [
{
"seat_id": "1_4"
},
{
"seat_id": "4_2"
}]
}]
但这似乎不起作用。我需要使用什么正确的格式?我尝试了很多选择,但无法正常工作。
更新:
我现在在控制台中看到的错误是:
jquery-1.11.0.min.js:2 Uncaught TypeError: Cannot read property 'length' of undefined
at Function.each (jquery-1.11.0.min.js:2)
at Object.success ((index):145)
at j (jquery-1.11.0.min.js:2)
at Object.fireWith [as resolveWith] (jquery-1.11.0.min.js:2)
at x (jquery-1.11.0.min.js:4)
at XMLHttpRequest.b (jquery-1.11.0.min.js:4)
第145行是:
$.each(response.bookings, function(index, booking) {
答案 0 :(得分:0)
您在这里有选择。键值{“ key”:value}或{“ name”:john}是一种方法。您可以执行更多信息,例如“员工”:{“ name”:“ John”,“ age”:30,“ city”:“ New York”}
答案 1 :(得分:0)
正如您所说,我认为您是response.bookings
这样的$arr = [1,2,3,4,5];
数组。
如果您像下面那样进行迭代
$.each($arr,function(i,k){
console.log(i,k)
})
您将获得输出0,1 1,2 2,3 ...
但是我没有得到预订。seat_id的意思是..?您能给我们预订数组的格式吗?
答案 2 :(得分:0)
我终于找到了解决方案。谢谢所有帮助的人。这是非常简单和愚蠢的。我只需要从以下位置更改JSON响应:
[{
"bookings": [
{
"seat_id": "1_4"
},
{
"seat_id": "4_2"
}]
}]
到
{
"bookings": [
{
"seat_id": "1_4"
},
{
"seat_id": "4_2"
}]
}
基本上摆脱[]