#javascript #php #arrays #ajax
#javascript #php #массивы #ajax
Вопрос:
$.ajax({
url : 'phpscript/eventDayRender.php',
type: 'POST',
async : false,
global : false,
success:function(data){
var obj = JSON.parse(data);
var len = parseInt(obj.total);
//var rack_count = Object.keys(obj['data']).length;
//console.log(rack_count);
for(var k=0; k < len; k ){
html ='<tr>';
//Here i am not able to access the value day-min.js:137
//Uncaught TypeError: Cannot read property '0' of undefined at Object.success (day-min.js:137)
html ='<td><div class="slot">' obj[k][0] '</div></td>';
html ='<td><div class="rack">Hello</div></td>';
html ='<td><div class="rack">Hello</div></td>';
html ='</tr>';
}
}
});
массив — это что-то вроде
{
"data": {
"12:00 am to 04:00 am": {
"bookings": {
"user": "Rishabh",
"date": "2019-3-31",
"slot": "08:00 pm to 12:00 am",
"rack": "1"
}
},
"04:00 am to 08:00 am": {
"bookings": {
"user": "Rishabh",
"date": "2019-3-31",
"slot": "08:00 pm to 12:00 am",
"rack": "1"
}
},
"08:00 am to 12:00 pm": {
"bookings": {
"user": "Rishabh",
"date": "2019-3-31",
"slot": "08:00 pm to 12:00 am",
"rack": "1"
}
},
"12:00 pm to 04:00 pm": {
"bookings": {
"user": "Rishabh",
"date": "2019-3-31",
"slot": "08:00 pm to 12:00 am",
"rack": "1"
}
},
"04:00 pm to 08:00 pm": {
"bookings": {
"user": "Rishabh",
"date": "2019-3-31",
"slot": "08:00 pm to 12:00 am",
"rack": "1"
}
},
"08:00 pm to 12:00 am": {
"bookings": {
"user": "Rishabh",
"date": "2019-3-31",
"slot": "08:00 pm to 12:00 am",
"rack": "1"
}
}
},
"total": "6"
}
В этом я хочу получить доступ с 12:00 до 04: 00 утра, но когда я передаю аргумент в цикле, выдается вышеуказанная ошибка..
Комментарии:
1. В вашем примере нет массивов.
2. его кодировка в формате json приведена ниже
3. Опять же, у вас нет массива , и это причина вашей ошибки. .
4. Я согласен с PM 77-1 в этом вопросе — массив представляет собой последовательность значений / объектов, заключенных в квадратные скобки. Ваш объект данных должен возвращать что-то вроде
"data": [ {"12:00 am to 04:00 am":{...}}, {"04:00 am to 08:00 am": {...}}, ... ]
Ответ №1:
Вы не можете индексировать объект подобным образом. Вам нужно передать ключ, который в приведенном выше случае равен «с 12:00 до 04:00 утра». Таким образом, вы можете получить к нему доступ через obj.data["12:00 am to 04:00 am"]
.
Если вы хотите выполнить итерацию по объекту, используйте следующий способ.
for (var key in obj.data) {
if (obj.data.hasOwnProperty(key)) {
console.log(key " -> " obj.data[key]);
}
}
Комментарии:
1. И как я могу получить такой же доступ к данным о бронированиях, приведенным выше. «заказы»: { «пользователь»: «Ришабх», «дата»: «2019-3-31», «слот»: «с 08:00 до 12:00», «стойка»: «1» }
2. Я не думаю, что вам нужно повторять
booking
, поскольку у него есть фиксированные ключи. Вы можете получить прямой доступbookings.user
,bookings.date
и так далее.