我有一个简单的搜索框,我使用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 %}
articles.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);
}
答案 0 :(得分:1)
我不知道这是多么必要,因为它是一个印刷错误而不是逻辑错误,并且可能不会适用于很多人,所以对于下一个人来说,这可能不是你的解决方案&#39重新寻找,但这可能是一个很好的教训。每当你到处寻找一个错误,并且你确定你已经做好了一切,请休息一下。稍后以新鲜的眼睛回来。问题永远不会是你认为的问题。
在这种情况下,他在searchSuccess()定义中错过了A,其中$('#serch-results')
应该是$('search-results)
。
编辑:同样,在django的开发服务器上,我遇到了ajax和一两个其他函数的问题,其中代码的更改停止生效。有时你必须重新启动服务器,终端或整个机器(我建议按顺序)