J'ai un problème avec le plugin jquery-autocomplete et mon script django. Je veux un plugin autocomplete facile à utiliser. Et pour ce que je vois cela (http://code.google.com/p/jquery-autocomplete/) on a l'air très utile et facile. Pour la partie django je l'utilise (http://code.google.com/p/django-ajax-selects/) je l'ai un peu modifié, car la sortie me paraissait un peu bizarre. Il y avait 2 '\ n' pour chaque nouvelle ligne, et il n'y avait pas d'en-tête Content-Length dans la réponse. D'abord je pensais que cela pourrait être le problème, parce que tous les exemples en ligne que j'ai trouvés les avaient. Mais ce n'était pas le problème.jquery-autocomplete ne fonctionne pas avec mon application django
J'ai une très petite test.html avec le corps suivant:
<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>
Et ceci est l'appel JQuery ajouter autocomplete à l'entrée.
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'
});
});
Quand je tape quelque chose dans le champ de texte Firefox (Firebug) et Chrome navigateur indique que ther est un appel ajax, mais sans réponse. Si je copie juste la ligne dans mon navigateur, je peux voir la réponse.
(ce problème est résolu, il était une caractéristique de sécurité de ne pas obtenir ajax les données d'un autre domaine)
Par exemple, lorsque je tape Bi dans le champ de texte, l'URL "... http://gladis.org/ajax/tag?q=Bi&max est généré. Lorsque vous entrez dans votre navigateur vous obtenez cette réponse:
4|Bier|Bier
43|Kolumbien|Kolumbien
33|Namibia|Namibia
maintenant mon appel ajax obtenir la réponse correcte, mais il n'y a toujours pas de liste montrant toutes les entrées possibles J'ai aussi essayé de formater la sortie, mais ce doesn. Je n'ai pas travaillé non plus, j'ai mis des freins à la fonction et je me suis rendu compte qu'ils ne seront pas appelés du tout. 210 Voici un lien vers mon fichier HTML minimum http://gladis.org/media/input.html
Quelqu'un at-il une idée de ce que j'ai fait de mal. J'ai également téléchargé tous les fichiers sous la forme d'un petit zip au
http://gladis.org/media/example.zip
.
Nous vous remercions de votre aide!
[Modifier] voici les urls conf:
(r'^ajax/(?P<channel>[a-z]+)$', 'ajax_select.views.ajax_lookup'),
et la configuration du canal de recherche ajax
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'),
}
et la vue:
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
Non, je n'ai pas besoin de la barre oblique. En fait, cela ne marchera pas avec un. C'est à cause de la configuration de l'URL. Comme je l'ai dit ci-dessus, quand je fais face à l'URL et que je la colle dans le navigateur, tout fonctionne correctement. Mais merci pour le conseil avec les sélecteurs! –