У меня возникла проблема с подключением jquery-autocomplete и моим сценарием django. Я хочу простой в использовании модуль автозаполнения. И для того, что я вижу, это (http://code.google.com/p/jquery-autocomplete/) кажется очень полезным и легким. Для части django я использую это (http://code.google.com/p/django-ajax-selects/), я немного изменил его, потому что внешний вид выглядел немного привязанным ко мне. Для каждой новой строки было 2 '\ n', и в ответе не было заголовка Content-Length. Сначала я думал, что это может быть проблемой, потому что все онлайн-примеры, которые я нашел, имели их. Но это не проблема.jquery-autocomplete не работает с моим приложением django
У меня есть очень небольшой test.html со следующим телом:
<body>
<form action="" method="post">
<p><label for="id_tag_list">Tag list:</label>
<input id="id_tag_list" name="tag_list" maxlength="200" type="text" /> </p>
<input type="submit" value="Submit" />
</form>
</body>
И это вызов JQuery, чтобы добавить автозаполнения на вход.
function formatItem_tag_list(row) {
return row[2]
}
function formatResult_tag_list(row) {
return row[1]
}
$(document).ready(function(){
$("input[id='id_tag_list']").autocomplete({
url:'http://gladis.org/ajax/tag',
formatItem: formatItem_tag_list,
formatResult: formatResult_tag_list,
dataType:'text'
});
});
Когда я печатаю что-то внутри TextField Firefox (Firebug) и Хром-браузер указывает на то, что Ther является вызов Ajax, но без ответа. Если я просто скопирую строку в свой браузер, я увижу ответ.
(этот вопрос решается, это функция безопасности с помощью AJAX, чтобы не получить данные из другого домена)
Например, когда я печатал Bi в текстовом поле, URL-адрес "http://gladis.org/ajax/tag?q=Bi&max ... генерируются. При вводе это в вашем браузере вы получите такой ответ:
4|Bier|Bier
43|Kolumbien|Kolumbien
33|Namibia|Namibia
Теперь мой Аякс вызова получить правильный ответ, но до сих пор нет списка показа всех возможных записей я пытался также формат вывода, но это Безразлично. Я тоже работаю. Я установил функции brakepoints и понял, что они вообще не будут называться.
Вот ссылка на мой минимальный HTML-файл http://gladis.org/media/input.html
Кто-нибудь знает, что я сделал не так. Я также загрузил все файлы в виде небольшого почтового индекса на
http://gladis.org/media/example.zip
.
Благодарим за помощь!
[Редактировать] здесь является URLs конф:
(r'^ajax/(?P<channel>[a-z]+)$', 'ajax_select.views.ajax_lookup'),
и конфигурация
AJAX_LOOKUP_CHANNELS = {
# the simplest case, pass a DICT with the model and field to search against :
'tag' : dict(model='htags.Tag', search_field='text'),
}
Аякса поиска каналов и вид:
def ajax_lookup(request,channel):
""" this view supplies results for both foreign keys and many to many fields """
# it should come in as GET unless global $.ajaxSetup({type:"POST"}) has been set
# in which case we'll support POST
if request.method == "GET":
# we could also insist on an ajax request
if 'q' not in request.GET:
return HttpResponse('')
query = request.GET['q']
else:
if 'q' not in request.POST:
return HttpResponse('') # suspicious
query = request.POST['q']
lookup_channel = get_lookup(channel)
if query:
instances = lookup_channel.get_query(query,request)
else:
instances = []
results = []
for item in instances:
results.append(u"%s|%s|%s" % (item.pk,lookup_channel.format_item(item),lookup_channel.format_result(item)))
ret_string = "\n".join(results)
resp = HttpResponse(ret_string,mimetype="text/html")
resp['Content-Length'] = len(ret_string)
return resp
Нет, мне не нужна конечная косая черта. На самом деле это не сработает. Это связано с конфигурацией URL. Как я уже говорил выше, когда я копирую URL и вставляю его в браузер, все работает нормально. Но спасибо за подсказку с селекторами! –