Я просмотрел другие вопросы, связанные с этим, но еще не нашел ответа на мой (первый!) вопрос:
Я сериализую представление django и отправляю его на сервер с помощью ajax (jquery). Я получаю сериализованные данные (протестировал их с предупреждением и получил данные JSON, ответ 200 ok), но не могу заставить следующее работать с успехом:
$('div#nextSet' + currentLetter).click(function(){
var output = '';
$.ajax({
url: 'path/to/django/view',
data: {'data':sentToServer},
datatype: 'json',
error: function(xhr_data) {
display_error();
},
success: function(data) {
$.each(data, function(i){
var firstName =data[i].fields.first_name;
var lastName = data[i].fields.last_name;
var portrait = data[i].fields.portrait;
var output = '<ul><li>' + firstName + ' ' + lastName + '</li>';
output += '<li><img src="' + portrait + '" /></li></ul>';
alert(output);
});
}
});
});
Этот код работает в google chrome и firefox в консоли (оповещение отображается с образцом html), но не запускается на странице. Я получаю следующую ошибку:
Uncaught TypeError: Не удается прочитать свойство 'first_name' из неопределенного.
Я попробовал консоль, чтобы увидеть, как получить доступ к элементам карты/словаря javascript, и я могу получить значение при вводе следующего, заменив i фактическим числом: data[number].fields. first_name Значение отображается в консоли, и сообщение об ошибке не появляется.
Это пример данных, возвращаемых представлением django для одного элемента: var data = [{"pk": 8, "model": "app.model", "fields": {"portrait":
"this/is/the/photo/path.png", "first_name": "First", "last_name": "LastName"}}, ].
Все это встроено в код успеха, что означает, что ничего не должно выполняться (?), если обратный вызов не доступен. Итак, если данные присутствуют -- поскольку оповещение (данные) работает, и я получаю ответ 200 ok от сервера -- и код работает в консоли -- это означает, что оповещение обрабатывается и появляется, есть ли что-то, что я упускаю из виду ?