Question

Je suis en train de mettre en œuvre une recherche en direct sur mon site de photos en utilisant jQuery et le plugin autocomplete. Tout fonctionne quand je les spécifions données localement:

var data = [ {text:'Link A', url:'/page1'}, {text:'Link B', url: '/page2'} ];

Mais quand je déplace ce à PHP, jQuery est incapable d'analyser correctement les résultats. Je ne suis vraiment pas sûr de ce qui se passe ici. Mon code actuel est ci-dessous:

<script>
$(document).ready(function(){
var data = '/livesearch'; 
$("#aut_field").autocomplete(data, {
  formatItem: function(item) {
    return item.text;
  }
}).result(function(event, item) {
  location.href = item.url;
});
                });
</script>

Et mon script PHP imprime un tableau multidimensionnel dans le format suivant:

{"1":{"text":"Google Website","url":"http:\/\/www.google.com"},
 "2":{"text":"Yahoo Website","url":"http:\/\/yahoo.com"},}

Cependant, quand je alerte (item.text) la variable dit non définie.

Si je alerte (point) Je vois la chaîne entière par PHP émis.

J'ai essayé de jouer avec eval () mais je ne suis pas sûr où mettre ou comment obtenir JS pour interpréter les données. Merci de votre aide. Exemple de code spécifique à ma mise en œuvre est appréciée.

Était-ce utile?

La solution

Le problème est avec le code php.

Votre travail consiste à imiter la strcuture du travail tableau JavaScript. Voir la json_encode de php ()

Autres conseils

essayez dans votre php ce modèle:

[
   {"text":"Google Website","url":"http:\/\/www.google.com"},
   {"text":"Yahoo Website","url":"http:\/\/yahoo.com"}
]

Et votre script PHP retourne un tableau multidimensionnel / objet mélanger. Si vous insistez (vous faire exploser votre var avec plusieurs "texte:" amd "url";) il shou1ld être:

[[{"text":"Google Website","url":"http:\/\/www.google.com"}],[{"text":"Yahoo Website","url":"http:\/\/yahoo.com"}]]

Mieux:

var x=[["Google Website","http:\/\/www.google.com"],["Yahoo Website","http:\/\/yahoo.com"]];

Si vous voulez passer à Yahoo Site Web: var url = x [1] [1];

Ou:

var x={"Google_Website":"http:\/\/www.google.com","Yahoo_Website":"http:\/\/yahoo.com"};

Si vous voulez sauter Google_Website: var url = x [ "Google_Website"];

Mon conseil: visitez entrer la description de lien

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top