Aiuto con il passare multidimensionale matrice JSON per jQuery completamento automatico tramite la tecnologia AJAX

StackOverflow https://stackoverflow.com/questions/2145035

Domanda

Sto cercando di attuare una ricerca diretta sul mio sito le foto utilizzando jQuery e il plugin completamento automatico. Tutto funziona quando ho specifiy i dati a livello locale:

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

Tuttavia quando mi muovo questo a PHP, jQuery è in grado di analizzare i risultati in modo corretto. Io non sono davvero sicuro di quello che sta succedendo qui. Il mio codice corrente è inferiore:

<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>

E il mio script PHP stampa un array multidimensionale nel seguente formato:

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

Tuttavia quando faccio alert (item.text) la variabile dice non definita.

Se faccio avviso (voce) vedo l'intera stringa come emesso da PHP.

Ho provato a giocare con eval (), ma non sono sicuro dove metterlo o come raggiungere JS interpretare effettivamente i dati. Grazie per l'aiuto. Esempio di codice specifico per la mia realizzazione è apprezzato.

È stato utile?

Soluzione

Il problema è con il codice php.

Il vostro compito è quello di imitare lo strcuture della lavorazione javascript array. Vedi json_encode di PHP ()

Altri suggerimenti

provare in PHP questo schema:

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

E il tuo script PHP restituisce un multidimensionale matrice / oggetto mescolare. Se si insiste (si soffia il tuo var con diversi "testo:" AMD "url;") che shou1ld essere:

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

Meglio:

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

Se si desidera passare a Yahoo Sito web: var url = x [1] [1];

o

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

Se si desidera passare a Google_Website: var url = x [ "Google_Website"];

Il mio consiglio: visita entrare Descrizione Link qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top