我如何使用jquery autocomplete
?你能帮我吗?谢谢
更新:我写了以下视图。没有ajax
,哪个工作正常。现在我想与ajax
集成。我累了很多。但没发现运气。我需要你的帮助。谢谢你们
def search(request):
errors = []
if 'q' in request.GET:
q = request.GET['q']
if not q:
errors.append('Enter a search term.')
else:
categories = UserProfile.objects.filter(user=request.user)[0]
languages = categories.language.all()
movies = Movie.objects.filter(title__istartswith=q,language__in=languages)
results = [ x.title for x in movies ]
json = simplejson.dumps(results)
return HttpResponse(json, mimetype="application/json")
<form action="/search/" method="get">
<input type="text" name="q" id ="q">
<input type="submit" value="Search">
</form>
UPDATE3:当我使用以下ajax函数时。有效。它在terminal
中显示数据。但问题是它没有在输入字段中显示电影列表。
d
<script>
$(document).ready(function() {
$("#q").autocomplete("/search/");
});
</script>
更新4:我刚刚更改了代码。现在它在一行中显示内容。这是截图。
更新5:当我使用此return HttpResponse(json, mimetype="plan/text")
时,它有效。但问题是一样的(一行中的所有内容)。如果我使用return HttpResponse(json, mimetype="application/json")
它不起作用。
答案 0 :(得分:0)
如果您不必编写自己的Ajax,可以使用此tutorial。这是我自动完成工作的方式。如果您在评论中发布此工作帖有任何问题。
答案 1 :(得分:0)
您使用'q'作为get字符串,但jquery自动完成小部件期望它被称为'term'。您需要在视图开头进行以下更改:
if 'term' in request.GET:
q = request.GET['term']
if not q:
errors.append('Enter a search term.')
...
编辑:在OP更新问题之前添加了答案的下一部分,json对结果进行了编码。
您不能只返回电影的查询集 - 它必须采用自动完成小部件可以理解的格式。最简单的方法是返回一个名称列表(与您尝试使用编程语言的示例相同。视图的结尾应如下所示:
# import at the top of your views.py
from django.utils import simplejson
...
movies = Movie.objects.filter(title__istartswith=q,language__in=languages)
results = [ x.title for x in movies ] # this is good, you didn't need to comment it out!
# now encode the results as json, and return them
return HttpResponse(simplejson.dumps(results), mimetype="application/json")
了解您如何继续,并在遇到问题时发表评论。