Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.03.2013, 00:54
Новичок на форуме
Отправить личное сообщение для talliar Посмотреть профиль Найти все сообщения от talliar
 
Регистрация: 10.03.2012
Сообщений: 9

Проблема с 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 есть разница каким образом создан массив?

Заранее спасибо!
Тому, кто поможет разобраться - флакончик хорошего алкоголя)

Последний раз редактировалось talliar, 25.03.2013 в 01:05.
Ответить с цитированием
  #2 (permalink)  
Старый 25.03.2013, 08:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Может быть проблемы с кодировкой? Но тогда по идее json_encode должен просто выдать null если не ошибаюсь. А что дает json_encode ($result) ? Это работает?
Ответить с цитированием
  #3 (permalink)  
Старый 25.03.2013, 09:13
Новичок на форуме
Отправить личное сообщение для talliar Посмотреть профиль Найти все сообщения от talliar
 
Регистрация: 10.03.2012
Сообщений: 9

Здравствуйте! за ночь тут появилась новая информация у меня) Оказалось все дело в строковой функции if(stristr($one_tag, $tag)

Я незнаю в чем причина, но если убираю эту проверку - все работает. Ставлю назад - не работает. С кодировкой все в порядке, все верно json_encode вернет NULL если она будет не utf-8

Каким образом проверить строку на вхождение подстроки что-то не могу представить)))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax $.post вместо json проблема данные не приходят Sadist_dead AJAX и COMET 2 12.07.2012 17:59
Проблема с json в ответе от сервера madkinadm ExtJS 3 16.05.2012 16:09
проблема с json mcavalon AJAX и COMET 2 03.01.2012 20:00
проблема с autocomplete brainraider jQuery 5 12.05.2011 09:50
проблема с JSON объектом в AJAX запросе jura4x01 jQuery 6 01.12.2010 15:40