Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » как правильно сформировать ответ на ajax post [RSS Feed]

#1 Март 12, 2013 12:50:23

terrrible
Зарегистрирован: 2013-02-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

как правильно сформировать ответ на ajax post

Здравствуйте, помогите разобраться как сформировать правильный ответ функцией представления.
Интересует как отправить:
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()?

Отредактировано terrrible (Март 12, 2013 12:51:49)

Офлайн

#2 Март 12, 2013 14:07:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как правильно сформировать ответ на ajax post

Попробуй просто

alert(server_data) и alert(server_data['day_ev'])
, что даст?



Отредактировано FishHook (Март 12, 2013 14:07:42)

Офлайн

#3 Март 12, 2013 14:15:19

terrrible
Зарегистрирован: 2013-02-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

как правильно сформировать ответ на ajax post

Первый даёт данные в формате:

"{'success':'Ok', 'day_ev': '<p>\n My html data</p>\n'}"
А второй “undefined”

Офлайн

#4 Март 12, 2013 14:38:01

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как правильно сформировать ответ на ajax post

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)



Отредактировано FishHook (Март 12, 2013 14:38:15)

Офлайн

#5 Март 12, 2013 15:10:32

terrrible
Зарегистрирован: 2013-02-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

как правильно сформировать ответ на ajax post

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

А с точки зрения концепции, так нормально отсылать блоки готового html?

Отредактировано terrrible (Март 12, 2013 15:10:49)

Офлайн

#6 Март 13, 2013 05:10:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как правильно сформировать ответ на ajax post

А зачем eval? После того, как клиентский скрипт получает HTML он что с ним должен сделать? Логично предположить, что должен вставить в какой-то контейнер. Ну и вперед

$('#send_form').submit(function (event) {
		event.preventDefault();
		$.post("/add_event/", $("#send_form").serialize(), function(server_data){
                        $('#some_div').html(server_data);		
)
	});



Офлайн

  • Начало
  • » Django
  • » как правильно сформировать ответ на ajax post[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version