Django Ajax值已返回但未在下拉列表中显示

时间:2014-04-22 00:49:10

标签: jquery python ajax django

我有一个简单的搜索框,我使用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);
}

1 个答案:

答案 0 :(得分:1)

我不知道这是多么必要,因为它是一个印刷错误而不是逻辑错误,并且可能不会适用于很多人,所以对于下一个人来说,这可能不是你的解决方案&#39重新寻找,但这可能是一个很好的教训。每当你到处寻找一个错误,并且你确定你已经做好了一切,请休息一下。稍后以新鲜的眼睛回来。问题永远不会是你认为的问题。

在这种情况下,他在searchSuccess()定义中错过了A,其中$('#serch-results')应该是$('search-results)

编辑:同样,在django的开发服务器上,我遇到了ajax和一两个其他函数的问题,其中代码的更改停止生效。有时你必须重新启动服务器,终端或整个机器(我建议按顺序)