Форум сайта python.su
Здравствуйте, помогите разобраться как сформировать правильный ответ функцией представления.
Интересует как отправить:
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); } }) });
Отредактировано terrrible (Март 12, 2013 12:51:49)
Офлайн
Попробуй просто
alert(server_data) и alert(server_data['day_ev'])
Отредактировано FishHook (Март 12, 2013 14:07:42)
Офлайн
Первый даёт данные в формате:
"{'success':'Ok', 'day_ev': '<p>\n My html data</p>\n'}"
Офлайн
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)
Офлайн
Ага, понятно… спасибо.
Работает, но только нужно mimetype='application/json'
без этого вообще ничего в ответ не приходит.
И получается не нужен eval()?
А с точки зрения концепции, так нормально отсылать блоки готового html?
Отредактировано terrrible (Март 12, 2013 15:10:49)
Офлайн
А зачем eval? После того, как клиентский скрипт получает HTML он что с ним должен сделать? Логично предположить, что должен вставить в какой-то контейнер. Ну и вперед
$('#send_form').submit(function (event) { event.preventDefault(); $.post("/add_event/", $("#send_form").serialize(), function(server_data){ $('#some_div').html(server_data); ) });
Офлайн