2017-09-23 2 views
0

J'utilise jquery pour capturer une entrée d'utilisateur dans un champ de texte, puis afficher une liste déroulante des options possibles.Les résultats complets automatiques Jquery s'affichent sous forme de lettres individuelles et non de mots

Le script appelle une page php qui recherche et renvoie les résultats à la requête ajax.

Lorsqu'il ya plusieurs valeurs renvoyées par PHP, ils apparaissent comme

["Site 4,"Site 2","Site 1","Site 6","Site 7","Site 0"] 

Une seule valeur apparaît comme

["Site 4"] 

Ce que je reçois dans ma liste déroulante est la suivante (sur la base unique entrée)

[ 
LINE 
" 
S 
i 
t 
e 
LINE 
4 
" 
] 

Où LINE est un séparateur entre Site & 4 et les guillemets et crochets sont affichés.

Mon Jquery est:

$('#site').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url : 'siteCheck.php?name=' + request.term, 
      success: function(data) { 
       console.log (data) 
       response($.map(data, function(item) { 
        return { 
         label: item, 
         value: item, 
         data : item 
        } 
       })); 
      } 
     }); 
    }, 
    autoFocus: true,    
    minLength: 1, 
     select: function(event, ui) { 
      $('#site').val(ui); 
     }    
    }); 

Comment puis-je obtenir ce pour retourner la liste déroulante comme

Site 4 
Site 2 
Site 1 
Site 6 
Site 7 
Site 0 

et non des lettres individuelles!

Merci

Répondre

1

tout d'abord: Est-ce une faute de frappe, que votre tableau de JSON n'a pas fermeture " pour le premier élément? Deuxièmement: selon le doc pour la saisie semi-automatique, source, serait suffisant pour simplement passer le tableau en tant que tableau simple, comme vous l'avez déjà. Pas besoin de le transformer en quelque chose avec étiquette/valeur.

Dans l'exemple de remote datasource, ils ont juste ajouter source: 'remoteScript.php'

Vous pouvez simplement utiliser

$('#site').autocomplete({ 
    source: 'siteCheck.php?name=' + request.term, 
    autoFocus: true, 
    minLength: 1, 
    select: function(event, ui) { 
     $('#site').val(ui); 
    } 
}); 

EDIT:

Essayez de modifier vous script côté serveur pour accepter term en tant que paramètre GET, alors votre URL peut supprimer la partie, avec le terme ajouté, car la saisie semi-automatique le fait pour vous:

source: 'siteCheck.php', //should accept term as parameter 
+0

Merci pour la réponse, oui c'était une faute de frappe! Je vais essayer cela et vous laisser savoir comment je m'entends. – Tom

+0

Parfait qui fait exactement ce dont j'ai besoin merci :) – Tom