Aiuto con il passare multidimensionale matrice JSON per jQuery completamento automatico tramite la tecnologia AJAX
-
23-09-2019 - |
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.
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