Мне нужно вызвать некоторую функцию python и показать ее результаты (на самом деле пара списка объектов) в div id = "places" раздел. Я пытаюсь сделать это в функции Javascript show_sec(), но я не могу узнать, как поймать данные с сервера и обработать его на клиенте.Отправлять данные от сервера к клиенту - ajax
Моя задача очень простая и простая, но поскольку это мой первый веб-проект, мне нужна помощь с ajax. Пожалуйста, помогите мне.
Это часть моего кода:
.html
{% include "header.html" ignore missing %}
<!-- contents of nearest banks page -->
<section id="ask_user">
<div id="question">Разрешить приложению определить Ваше место расположения для нахождения ближайших банков?</div>
<div id="buttons">
<input type="button" name="yes" value="Да, разрешить" onclick="show_sec()"/>
<input type="button" name="no" value="Нет, не разрешать" onclick="dnt_show_sec()"/>
</div>
</section>
<section id="allowed" style="display:none;">
<div id="map_canvas"></div>
<div id="nearest_banks">
<form action="/nearest_banks/radius" method="get" id="send_radius">
Курс ближайших банков на сегодня в радиусе
<input type="text" name="radius" id="radius" size="5" value={{radius}} >
<input type="submit" class="button" value="V">
метров
</form>
<div id="check"> {{output}}</div>
<div id="places"> </div>
</div>
</section>
<section id="not_allowed" style="display:none;">
<div class="question"> Приложение не имеет возможности определить близ лежащие банки.<div>
</section>
</body>
<script type="text/javascript">
/* frm.submit(function() {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serializeArray(),
cache: false,
success: function() {
$("#check").html("OK!!!");
},
error: function(data) {
$("#check").html("Something went wrong!");
}
});
return false;
}); */
function show_sec() {
document.getElementById('allowed').style.display = "block";
document.getElementById('ask_user').style.display = 'none';
$.ajax({
type: "get",
url: "/nearest_banks/radius",
}).success(function(data) {
$("#places").html(data);
/*alert ("OK !!!"); */
});
}
function dnt_show_sec() {
document.getElementById('not_allowed').style.display = "block";
document.getElementById('ask_user').style.display = 'none';
}
$(document).ready(function(){
$("button#yes").click(function(){
//alert("demo_test");
$("section#allowed").show();
});
});
</script>
функция питона я пытаюсь позвонить:
*def get(self):
default_radius = 1000
radius = get_radius(self)
exceptions = [u'', 'error', 0] # invalid values for radius
if any([radius in exceptions]):
radius = default_radius
#warning = "Вы ввели неверный радиус. Система автоматически заменила его на стандартный."
output = radius # заменить на вывод банков
else:
#warning = ''
output = radius # заменить на вывод банков
names, location = Findplaces(self, radius)
body_values = {
'names': names,
'location': location,
'radius': radius,
'output': output,
#'warning': warning,
}
template = jinja_env.get_template('nearest_banks.html')
self.response.out.write(template.render(body_values))*
Короче моей целью является отображение имен и местоположение в тегах div id = "places" после нажатия на Да кнопка.
Или, может быть, я могу инициировать отображение определенных тегов с сервера с помощью jinja2 в моей функции python.
Пожалуйста, помогите мне. Я потратил на это время, но не могу заставить его работать красиво. Заранее спасибо !
EDIT:
Когда я нажимаю на Да кнопки на show_sec функция загружает раздел с идентификатором разрешены. Проблема: Действие в форме не обрабатывается. Так отображается только html, но данные с сервера не принимаются.
Вы проверили консоль разработчиков? Каков ответ ajax-запроса? Каково значение 'data' в' show_sec'? –
Вы не объяснили, что работает или не работает, или какая у вас проблема – charlietfl
Извините, отредактировал мой вопрос. u_mulder, данные содержат html-код ... Как и все теги html, которые я показал выше – Elena