Ajuda com a passagem de JSON multidimensional para o JQuery AutoComplete via Ajax
-
23-09-2019 - |
Pergunta
Estou tentando implementar uma pesquisa ao vivo no meu site de fotos usando o jQuery e o plug -in de preenchimento automático. Tudo funciona quando especificar os dados localmente:
var data = [ {text:'Link A', url:'/page1'}, {text:'Link B', url: '/page2'} ];
No entanto, quando movo isso para PHP, o JQuery não consegue analisar os resultados corretamente. Eu realmente não tenho certeza do que está acontecendo aqui. Meu código atual está abaixo:
<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 meu script PHP imprime uma matriz multidimensional no seguinte formato:
{"1":{"text":"Google Website","url":"http:\/\/www.google.com"},
"2":{"text":"Yahoo Website","url":"http:\/\/yahoo.com"},}
No entanto, quando eu faço alerta (item.text), a variável diz indefinida.
Se eu fizer alerta (item), vejo a string inteira como emitida pelo PHP.
Tentei brincar com Eval (), mas não tenho certeza de onde colocá -lo ou como fazer com que o JS realmente interprete os dados. Obrigado pela ajuda. O código de exemplo específico da minha implementação é apreciado.
Solução
Como já explicado, a visualização consulta todas as tarefas na lista (> 5000 itens) e retorna todos os itens (> 5000) em lotes com paginação.Para que sua WebPart funcione, ele tem que consultar menos de 5000 itens e tem que retornar menos de 5000 itens também.A coluna de filtragem também deve ser indexada.
Realisticamente falando, suas opções incluem o seguinte:
- .
- Se você pretende mostrar as tarefas atribuídas ao usuário atual, crie uma exibição com o filtro atribuído a 'é igual a' [eu] e indexar a coluna atribuída
- Se você deseja mostrar tarefas para todos os usuários, pode ser melhor mostrar tarefas incompletas, caso em que precisar criar uma exibição com o status do filtro 'não é igual a' concluído e indexar o campo de status. .
Outras dicas
Tente em seu PHP este padrão:
[
{"text":"Google Website","url":"http:\/\/www.google.com"},
{"text":"Yahoo Website","url":"http:\/\/yahoo.com"}
]
E seu script PHP retorna uma matriz multidimensional/objeto misturar. Se você insiste (você explode seu var com vários "texto:" amd "url;"), ele é:
[[{"text":"Google Website","url":"http:\/\/www.google.com"}],[{"text":"Yahoo Website","url":"http:\/\/yahoo.com"}]]
Melhor:
var x=[["Google Website","http:\/\/www.google.com"],["Yahoo Website","http:\/\/yahoo.com"]];
Se você quiser pular para o site do Yahoo: var url = x [1] [1];
Ou:
var x={"Google_Website":"http:\/\/www.google.com","Yahoo_Website":"http:\/\/yahoo.com"};
Se você quiser pular para o google_website: var url = x ["google_website"];
Minha dica: visite Digite a descrição do link aqui