Pregunta

Estoy tratando de implementar una búsqueda en vivo en mi sitio de fotos usando jQuery y el complemento de autocompletar. Todo funciona cuando especifico los datos localmente:

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

Sin embargo, cuando muevo esto a PHP, JQuery no puede analizar los resultados correctamente. Realmente no estoy seguro de lo que está pasando aquí. Mi código actual está a continuación:

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

Y mi script PHP imprime una matriz multidimensional en el siguiente formato:

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

Sin embargo, cuando hago alerta (item.text), la variable dice indefinida.

Si hago alerta (elemento), veo la cadena completa como se emite por PHP.

Intenté jugar con eval () pero no estoy seguro de dónde ponerlo o cómo hacer que JS realmente interprete los datos. Gracias por tu ayuda. Se agradece el código de muestra específico para mi implementación.

¿Fue útil?

Solución

Como ya se explicó, la vista consulta todas las tareas en la lista (> 5000 artículos) y devuelve todos los elementos (> 5000) en lotes con paginación.Para que su página web funcione, debe consultar menos de 5000 artículos y tiene que devolver menos de 5000 artículos.La columna de filtrado también debe estar indexada.

Hablando de manera realista, sus opciones incluyen lo siguiente:

  1. Si tiene la intención de mostrar las tareas asignadas al usuario actual, cree una vista con el filtro asignado a los seres iguales a '[ME] e index la columna asignada
  2. Si desea mostrar tareas para todos los usuarios, puede ser mejor simplemente mostrar tareas incompletas, en cuyo caso debe crear una vista con el estado del filtro "no es igual a" completado e indexar el campo de estado.

Otros consejos

Prueba en tu PHP este patrón:

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

Y su script php devuelve una matriz multidimensional/objeto mezcla. Si insiste (explota su var con varios "texto:" AMD "URL;") Shou1ld Be:

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

Mejor:

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

Si desea saltar al sitio web de Yahoo: var url = x [1] [1];

O:

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

Si desea saltar a Google_Website: var url = x ["google_website"];

Mi consejo: visita Ingrese la descripción del enlace aquí

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top