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.

Foi útil?

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:

    .
  1. 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
  2. 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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top