Я работаю над проектом, в котором пользователю показан список ресторанов по умолчанию (rest objs), когда они посещают URL-адрес. Если пользователь хочет отправить свое местоположение с помощью функции геолокации HTML5, я хочу обновить список результатов, чтобы упорядочить его по близости к местоположению пользователя.
Исходный шаблон успешно отобразится, и я могу вернуть данные на сервер - я просто не могу повторно отобразить шаблон. Когда я просматриваю ответ на сообщение своего клиента в консоли dev, данные обновляются, но когда я перехожу на страницу, ничего не изменилось.
Я знаю, что я, вероятно, делаю глупую явную ошибку, я просто не знаю, что это такое.
Вот мое мнение:
def home():
if request.method == 'POST':
lat = request.form.get('lat','')
lng = request.form.get('lng','')
query = loc_query(lat,lng,10,0,20)
rests = Rest.query.from_statement(query).all()
return render_template('main.html',rests = rests)
else:
rests = getLatest(5)#Get 5 random rest objects
return render_template('main.html',rests = rests)
И вот мой клиентский скрипт:
<script type="text/javascript">
function sendloco (loc) {
$.post('/latest',{lat:loc.coords.latitude,lng:loc.coords.longitude},
function(data){
$('#restlist').html(data);
});
};
navigator.geolocation.getCurrentPosition(sendloco);
</script>
И вот соответствующая часть моего шаблона:
<div class="col-lg-12" id="restlist">
{% for rest in rests %}
<h2><b><a href="{{ url_for('profile',id=rest.id)}}">{{ rest.name }}</a></b></h2>
<h3>Date:{{ rest.latestDt() }}</h3>
<h3>{{ rest.street }}</h3>
{% endfor %}
</div>
Танск за помощью!
Похоже, вы вызываете $('.restlist').html(data)
но в html ваш div имеет id="restlist"
not class. Возможно, попробуйте $('#restlist').html(data)
.