Помогите с прохождением многомерного массива JSON в JQUERY AutoComplete через AJAX
-
23-09-2019 - |
Вопрос
Я пытаюсь реализовать живой поиск на моем сайте 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 предметов тоже.Фильтрующая колонна также должна быть проиндексирована.
Реалистически говоря, ваши варианты включают следующее:
- Если вы намерены показать задачи, назначенные текущему пользователю, создайте представление с помощью фильтра, назначенного To'IS, равным «[me] и индексируйте назначенный столбец
- Если вы хотите показать задачи для всех пользователей, может быть лучше просто показать неполные задачи, в этом случае вам необходимо создать представление с состоянием фильтра «не равен», выполненному и индексируют поле состояния.
Другие советы
Попробуйте в 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"];
Мой совет: посетите Введите описание ссылки здесь