Помогите с прохождением многомерного массива JSON в JQUERY AutoComplete через AJAX

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

Вопрос

Я пытаюсь реализовать живой поиск на моем сайте Photos, используя JQUERY и AutoComplete Plugin. Все работает, когда я определяю данные локально:

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

Однако, когда я перемещаю это в PHP, jQuery не может правильно проанализировать результаты. Я действительно не уверен, что здесь происходит. Мой текущий код ниже:

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

И мой скрипт PHP печатает многомерный массив в следующем формате:

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

Однако, когда я предупреждаю (item.text), переменная говорит не определен.

Если я буду предупреждать (элемент), я вижу всю строку как выведенную PHP.

Я пытался поиграть с eval (), но я не уверен, куда его поместить или как заставить JS фактически интерпретировать данные. Спасибо за вашу помощь. Пример кода, специфичный для моей реализации, ценится.

Это было полезно?

Решение

Как уже пояснилось, просмотр запросит все задачи в списке (> 5000 элементов) и возвращает все элементы (> 5000) в партиях с pagination.Для того, чтобы ваш веб-сайт работать, он должен запрашивать менее 5000 предметов, и он должен вернуться менее 5000 предметов тоже.Фильтрующая колонна также должна быть проиндексирована.

Реалистически говоря, ваши варианты включают следующее:

  1. Если вы намерены показать задачи, назначенные текущему пользователю, создайте представление с помощью фильтра, назначенного To'IS, равным «[me] и индексируйте назначенный столбец
  2. Если вы хотите показать задачи для всех пользователей, может быть лучше просто показать неполные задачи, в этом случае вам необходимо создать представление с состоянием фильтра «не равен», выполненному и индексируют поле состояния.

Другие советы

Попробуйте в PHP этот шаблон:

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

И ваш скрипт PHP возвращает многомерный массив/объект смешивание. Если вы настаиваете (вы взорвите свой VAR несколькими «текстами:" amd "url;") это будет:

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

Лучше:

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

Если вы хотите перейти на сайт Yahoo: var url = x [1] [1];

Или же:

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

Если вы хотите перейти на Google_Website: var url = x ["Google_Website"];

Мой совет: посетите Введите описание ссылки здесь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top