как использовать автозаполнение jquery - PullRequest
1 голос
/ 19 декабря 2011

Как мне использовать 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>

ОБНОВЛЕНИЕ 3: Когда я использую следующую функцию ajax. Это сработало. Его отображение данных в terminal. Но проблема в том, что в поле ввода не отображается список фильмов.

enter image description here d

мой аякс

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

ОБНОВЛЕНИЕ 4: Я только что изменил код. Теперь его отображение в одной строке. Вот скриншот. enter image description here

ОБНОВЛЕНИЕ 5: Когда я использую это return HttpResponse(json, mimetype="plan/text"), это сработало. но проблема одна и та же (все содержимое в одной строке). Если я использую return HttpResponse(json, mimetype="application/json") Это не работает.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2011

Вы используете 'q' в качестве строки получения, но виджет автозаполнения jquery ожидает, что он будет называться 'term'. В начале просмотра необходимо внести следующие изменения:

if 'term' in request.GET:
    q = request.GET['term']
    if not q:
        errors.append('Enter a search term.')
    ...

Редактировать: Следующая часть ответа была добавлена ​​до того, как ОП обновил свой вопрос, и 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")

Посмотрите, как вы справляетесь с этим, и оставьте комментарий, если у вас все еще есть проблемы.

0 голосов
/ 20 декабря 2011

Если вам не нужно писать свой собственный Ajax, вы можете использовать этот учебник .Это способ, которым я получил Auto-Complete для работы.Если у вас возникли проблемы с размещением этой работы в комментариях.

...