【问题标题】:how do i use jquery autocomplete我如何使用jquery自动完成
【发布时间】:2011-12-19 17:13:23
【问题描述】:

如何使用jquery autocomplete?你能帮帮我吗?谢谢

更新:我写了以下观点。没有ajax,它工作得很好。现在我想与ajax 集成。我累了很多。但没有找到运气。我需要你的帮助。谢谢各位

更新的views.py

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

我的 ajax

    <script>
   $(document).ready(function() {  
    $("#q").autocomplete("/search/");  
});
    </script>

更新 4:我刚刚更改了代码。现在它在一行中显示内容。这是屏幕截图。

更新 5:当我使用这个 return HttpResponse(json, mimetype="plan/text") 时,它起作用了。但问题是相同的(一行中的所有内容)。如果我使用return HttpResponse(json, mimetype="application/json") 它不起作用。

【问题讨论】:

  • 您开始here 并继续阅读,直到您有具体问题需要我们回答。
  • "我遵循的示例运行良好。" - 那么究竟是什么问题呢?您有什么需要帮助的吗?
  • 做个好人。如果他的示例工作和视图,OP 显然正在尝试。他们只需要一点帮助将它们粘合在一起。第一次很棘手。
  • 您能展示一下您为 AJAX 编写的内容吗?
  • @U-DON 我还没写。我是ajax的新手。我在看书。

标签: jquery django django-views


【解决方案1】:

您使用 'q' 作为获取字符串,但 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")

看看你是怎么做的,如果你仍然遇到问题,请发表评论。

【讨论】:

  • 感谢您的回复。我已经更新了视图。我试过了,但现在它没有在字段中显示内容。但在终端它起作用了。有什么问题?我错过了什么?谢谢
  • 我认为现在的问题是您使用q 作为搜索参数而不是term。我已经更新了我的答案。
  • Mime 类型 application/json 应该不会导致任何问题。仔细检查一下——您是否尝试过使用term 而不是q
  • 我试过 term 它不起作用。 'q' 工作正常。
  • 恐怕我无法发现问题所在。我希望你设法让它工作。
【解决方案2】:

如果您不必编写自己的 Ajax,可以使用此tutorial。这就是我让自动完成工作的方式。如果您在 cmets 中发布此作品有任何问题。

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多