Я смотрел на другие вопросы, связанные с этим, но еще не нашел что-то, что отвечает на мой (первый!) Вопрос:
Я сериализирую представление django и отправляю его на сервер сАякс (JQuery).Я получаю сериализованные данные (проверил их с предупреждением и получил данные JSON, 200 ok reponse), но не могу получить следующее для успешной работы:
$('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' из undefined.
Я попробовал консоль, чтобы увидеть, как получить доступ к элементам карты / словаря 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 от сервера - и код работает в консоли - то есть оповещение обрабатывается и появляется, есть ли что-то, что я пропускаю