Я написал ниже код и еще несколько, чтобы быстро создать прототип для трех экранного веб-приложения. Не планируете использовать его для производства. Проект почти закончен, но есть одна проблема, которая меня озадачивает. Я получаю сообщение об ошибке - Cannot read property 'first_name' of undefined
, хотя сначала проверяется, имеет ли объект свойство, указанное как неопределенное. Реализация кода не является примером того, как следует обрабатывать такие вещи, но почему это не работает? Чтобы предотвратить контекст funkiness, я даже клонировал массив - возможно, ненужный. Что вызывает неопределенную ошибку?путаница с hasOwnProperty
$.ajax({
url: '/api/v1/departures/' + routeID + '/',
method: 'GET',
headers: {
'Authorization': 'Token '+ owner_token]
},
contentType:'application/json',
success: function(departures) {
console.log('departures: ' + JSON.stringify(departures));
if (departures && (0 < departures.length)) {
var template = '';
for (var j = 0; j < departures.length; j++) {
if (departures[j].route == routeID) {
var seats = (departures[j].seats).slice(0);
for (var i = 0; i < seats.length; i++) {
template += '<div class="right-seat" data-id="' + seats[i].seat + '">' +
'<div class="right-seat-place">SEAT ' + seats[i].seat + '</div>' +
'<div class="right-seat-name">' +
seats[i].hasOwnProperty('passenger') ? seats[i].passenger.first_name + ' ' + seats[i].passenger.last_name : '' +
'</div>' +
'<div class="right-seat-reserved"><i class="glyphicon glyphicon-check"></i> ' +
seats[i].hasOwnProperty('passenger') ? 'Reserved' : 'Available' +
'</div>' +
'</div>';
}
}
}
$('div.right-top-controls').after(template);
}
},
error: function() {
alert('error!');
}
});
Просьба сообщить.
спасибо.
У пассажира может отсутствовать свойство first_name. Для этого нет никакой проверки. –
Это правда, но что это связано с моим вопросом или ошибкой? –
По существу, кажется, что ваш жук имеет свойство с именем «пассажир», но это не определено, например, seat = {пассажир: неопределенный}; seat.hasOwnProperty («пассажир») – juvian