我有一个简单的搜索框,其中使用Ajax在下拉建议列表中显示博客标题。
我没有看到任何错误,并且在inspect element > network > response
通过浏览器使用时确实看到了填充的数据。浏览器可以正确提取/articles/search/
每个按键,并且数据就在那里,只是没有显示在我的模板中。
有什么建议?
urls.py
url(r'^search/$', 'article.views.search_titles'),
Views.py
def search_titles(request):
if request.method == "POST":
search_text = request.POST['search_text']
else:
search_text = ''
articles= Articles.objects.filter(title__icontains=search_text)
return render_to_response('ajax_search.html', {'articles' : articles})
ajax_search.html
{% for article in articles %}
<li><a href="/{{ article.slugname }}/">{{ article.title }}</a></li>
{% endfor %}
article.html
{% extends "base.html" %}
{% block sidebar %}
<h3>Search</h3>
{% csrf_token %}
<input type="text" id="search" name="search">
<ul id="search-results">
</ul>
{% endblock %}
base.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<script src="{% static "js/jquery-1.11.0.min.js" %}"></script>
<script src="{% static "js/ajax.js" %}"></script>
....
ajax.js
$(function(){
$('#search').keyup(function() {
$.ajax({
type: "POST",
url: "/articles/search/",
data: {
'search_text' : $('#search').val(),
'csrfmiddlewaretoken' : $("input[name=csrfmiddlewaretoken]").val()
},
success: searchSuccess,
dataType: 'html'
});
});
});
function searchSuccess(data, textStatus, jqXHR)
{
$('#serch-results').html(data);
}
我不知道这是多么必要,因为这是一个印刷错误,而不是一个逻辑错误,并且可能不适用于许多人,因此对于下一个出现的人,这可能不是您正在寻找的解决方案,但是可能是一个很好的教训。每当您到处寻找bug并确定已正确完成所有操作时,请休息一下。以后再以新鲜的眼睛回来。问题永远不会出现在您认为的地方。
在这种情况下,他失踪了一个在他searchSuccess()的定义,其中$('#serch-results')
应该有$('search-results)
。
编辑:另外,在django的开发服务器上,我遇到了ajax和一个或两个其他函数的问题,这些地方的代码更改停止生效。有时您必须重新启动服务器,终端或整个计算机(我建议按此顺序)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句