Проблема с autocomplete - JSON дуркует
Здравствуйте! Очень странная проблема.
Есть массив созданный в цикле: PHP: foreach ($tags as $one_tag){ if(stristr($one_tag, $tag) !== false){ $tags_array[] = $one_tag; } } $result = array_unique($tags_array); По сути тоже самое, что ручками его прописать $result = array ("dsd", "ddd, "fdf"); Этот массив я кодирую в JSON $json_data = array ('query'=>$tag,'suggestions'=>$result); echo json_encode($json_data); Сразу же после получения данных в javascript стоит alert с полученными данными: $.ajax({ url: options.serviceUrl, data: options.params, type: options.type, dataType: options.dataType }).done(function (data) { alert(data); that.processResponse(data, q); options.onSearchComplete.call(that.element, q); }); И тут начинается самое увлекательное. Если массив получен в цикле, в алерте я получаю {"query":null,"suggestions":null} Если массив прописываю ручками как тут: $result = array ("dsd", "ddd", "fdf"); То в алерте получаю {"query":null,"suggestions":["dsd","ddd","fdf"]} При этом если просто обратиться к php скрипту напрямую, в обоих случаях я имею абсолютно одинаковые строчки: {"query":"d","suggestions":["dsd","ddd","fdf"]} Возможно кто-то знает в чем проблема? Где разница между массивом созданным в цикле и массивом набранным руками? При том, что при прямом обращении показывает абсолютно одинаковые строки. Может быть для JSON есть разница каким образом создан массив? Заранее спасибо! Тому, кто поможет разобраться - флакончик хорошего алкоголя) |
Может быть проблемы с кодировкой? Но тогда по идее json_encode должен просто выдать null если не ошибаюсь. А что дает json_encode ($result) ? Это работает?
|
Здравствуйте! за ночь тут появилась новая информация у меня) Оказалось все дело в строковой функции if(stristr($one_tag, $tag)
Я незнаю в чем причина, но если убираю эту проверку - все работает. Ставлю назад - не работает. С кодировкой все в порядке, все верно json_encode вернет NULL если она будет не utf-8 Каким образом проверить строку на вхождение подстроки что-то не могу представить))) |
Часовой пояс GMT +3, время: 00:00. |