Ajax Autocomplete de Jquery : Comment Envoyer des Paramètres de la Dynamique de
je suis en utilisant Ajax Autocomplete for Jquery
( http://www.devbridge.com/projects/autocomplete/jquery/ ) dans une de mes applications. Le Formulaire de Recherche ressemble à quelque chose comme ceci :
<form id="topsearch" method="POST" action="/searchAll"><input type="text" class="searchform" name="q" id="q" value="Country, City, Hotel or a Tourist Attraction" o nfocus="clearInput(this);" onblur="defaultInput(this);" />
<select id="top_search_select" name="entity_type">
<option value="country">Countries</option>
<option value="city">Cities</option>
<option value="place" selected="selected">Tourist Attractions</option>
<option value="hotel">Hotels</option>
</select>
<input type="submit" name="topsearch" class="submit" value="SEARCH" title="SEARCH"/>
</form>
et la saisie semi-automatique de la configuration ressemble à ceci:
<script type="text/javascript">
//<![CDATA[
var a = $('#q').autocomplete({
serviceUrl:'/search',
delimiter: /(,|;)\s*/, //regex or character
maxHeight:400,
width:325,
zIndex: 9999,
params: {entity_type:$('#top_search_select').val()},
deferRequestBy: 0, //miliseconds
noCache: false, //default is false, set to true to disable caching
onSelect: function(value, data){window.location.replace(data);},
});
//]]>
</script>
Maintenant, le problème est dans le backend, j'ai des gestionnaires différents qui génèrent des résultats pour les différents types d'entité que l'utilisateur puisse choisir par le biais de l'option sélectionner dans le formulaire.
Par Défaut entity_type
est place
qui est passée bien que le gestionnaire dans le backend. Cependant, ce que je veux, c'est quand une personne choisit une entité différente de la zone de sélection dans le formulaire params: {entity_type:$('#top_search_select').val()}
dans le script de configuration obtient également mis à jour.
De l'aide ou des idées sera apprécié. Merci.
OriginalL'auteur Amyth | 2012-06-03
Vous devez vous connecter pour publier un commentaire.
Alternativement, vous pouvez spécifier les paramètres à l'aide d'une fonction qui est évalué juste avant la requête ajax est envoyée.
OriginalL'auteur Pez Cuckow
Peut-être une vieille question, mais je pense qu'ici est la meilleure façon de le faire:
Alternativement, vous pouvez utiliser une fonction de l'option params (voir ma réponse).
OriginalL'auteur Stoked PHP Engineer
La méthode setOptions travaillé, même si nous avons besoin d'appeler le sélectionne changement de méthode. Pour changer le script pour:
et Sur le document de prêt de la fonction ajouter ceci :
appel "setOptions" méthode peut-être :/
OriginalL'auteur Amyth
Que vos plugins site précise dans l'usage fait ici http://www.devbridge.com/projects/autocomplete/jquery/ il a un
setOptions
méthode sur l'objet qu'il retourne que vous pouvez utiliser plus tard pour changer les options de manière dynamique.Ajouter un
onchange
gestionnaire sur l'sélectionnez l'élément et changer leparams
options à chaque fois que l'utilisateur sélectionne une valeur différente commeVous devez mettre toute votre code à l'intérieur de
document ready
.Désolé, je pensais que vous utilisez jQuery UI autocomplete. Mise à jour de réponse. 🙂
OriginalL'auteur Prasenjit Kumar Nag
Pez réponse n'a pas fonctionné pour moi juste une légère variation avec "extraParams'. Cela rend les paramètres dynamiques plutôt que de définir au chargement de la page...
OriginalL'auteur PodTech.io
Toutes les réponses ci-dessus ne fonctionne PAS pour moi (je soupçonne parce que je suis de passage "POST" données par le biais de ajaxSettings variable qui pourrait affecter "params" mais je n'ai pas de double contrôle).
De toute façon, tous les commentaires ont donné de bons conseils et je suis venu avec les éléments suivants:
J'ai donc été en mesure de livrer le script PHP à la fois le contenu de ajax_post et activity_id champs de saisie.
Noter qu'il ne suffit pas de faire:
Parce que, comme mentionné dans d'autres réponses à la valeur d'obtenir statique.
OriginalL'auteur lui