Найти - Пользователи
Полная версия: как правильно сформировать ответ на ajax post
Начало » Django » как правильно сформировать ответ на ajax post
1
terrrible
Здравствуйте, помогите разобраться как сформировать правильный ответ функцией представления.
Интересует как отправить:
1. готовый блок html
2. просто словарь

Есть какой-то механизм для каждого из этих вариантов? Либо готовый блок засовывать в тот же словарь?
Я попробовал сформировать ответ json. Ответ в ф-ию JS приходит, но никак не получается его обработать.
Делаю так:
формирование ответа:
json = "{'success':'Ok', 'day_ev': '%s'}" % render_to_string('event_update.html', {'day_events': day_events})
return HttpResponse(simplejson.dumps(json), mimetype='application/javascript')
обработка:
	$('#send_form').submit(function (event) {
		event.preventDefault();
		$.post("/add_event/", $("#send_form").serialize(), function(server_data){
			var response = eval('('+server_data+')');
			console.log(response);
			if (response.success == "Ok") {
				alert(response.day_ev);
				}
			})
	});
console.log(response) показывает, что ответ приходит. Но достать значения не получается. Правилен вообще такой приём с eval()?
FishHook
Попробуй просто
alert(server_data) и alert(server_data['day_ev'])
, что даст?
terrrible
Первый даёт данные в формате:
"{'success':'Ok', 'day_ev': '<p>\n My html data</p>\n'}"
А второй “undefined”
FishHook
json = {}
json["day_ev"] = render_to_string('event_update.html', {'day_events': day_events}]
return HttpResponse(simplejson.dumps(json), mimetype='application/javascript')

alert(server_data['day_ev'])


или

json = render_to_string('event_update.html', {'day_events': day_events}]
return HttpResponse(simplejson.dumps(json), mimetype='application/javascript')

alert(server_data)

terrrible
Ага, понятно… спасибо.
Работает, но только нужно mimetype='application/json'
без этого вообще ничего в ответ не приходит.
И получается не нужен eval()?

А с точки зрения концепции, так нормально отсылать блоки готового html?
FishHook
А зачем eval? После того, как клиентский скрипт получает HTML он что с ним должен сделать? Логично предположить, что должен вставить в какой-то контейнер. Ну и вперед
$('#send_form').submit(function (event) {
		event.preventDefault();
		$.post("/add_event/", $("#send_form").serialize(), function(server_data){
                        $('#some_div').html(server_data);		
)
	});
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB