Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с возвратом данных в формате JSON

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
wget
Отправлено: 13 Декабря, 2013 - 12:06:44
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Делаю запрос через Ajax, в файле php подключаюсь к базе данных, вывожу оттуда значения, конвертирую в JSON и возвращаю назад. Возвращаю в идеале, на практике не возвращается....

PHP:
скопировать код в буфер обмена
  1. $json = array('title'=>$title, 'author'=>$author, 'price'=>$price, 'nums'=>$nums);
  2. echo = json_encode($json, JSON_UNESCAPED_UNICODE);


Сам файл php показывает такой результат

CODE (javascript):
скопировать код в буфер обмена
  1. {"title":"Мать","author":"Горький","price":"400","nums":"12"}


Но он не возвращается. Если я просто вставляю эти строки

PHP:
скопировать код в буфер обмена
  1.  
  2. print <<<HERE
  3. {"title":"Мать","author":"Горький","price":"400","nums":"12"}
  4. HERE;
  5.  


То все нормально работает.

Подскажите что не так, ведь я перекодирую в JSON, почему он не хочет работать?
 
 Top
DelphinPRO
Отправлено: 13 Декабря, 2013 - 12:16:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




этот знак нафига?
echo = json_encode($json, JSON_UNESCAPED_UNICODE);


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
wget
Отправлено: 13 Декабря, 2013 - 12:18:44
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
этот знак нафига?
echo = json_encode($json, JSON_UNESCAPED_UNICODE);


Прошу прощения, случайно добавил, но в любом случае не работает...
 
 Top
Deonis
Отправлено: 13 Декабря, 2013 - 12:40:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


Помог: 14 раз(а)




У вас после строчки:
что-нибудь в этом файле еще есть?

P.S. Константа JSON_UNESCAPED_UNICODE доступна начиная с PHP 5.4.0. С версие у вас всё в порядке? И вообще, имеет ли смысл отменять кодирование?

(Отредактировано автором: 13 Декабря, 2013 - 12:43:51)

 
 Top
Panoptik
Отправлено: 13 Декабря, 2013 - 12:41:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




возможно у вас доп символы выводятся и json становится не валидным, проверьте на наличие выводимых данных включая пробелы, не выводятся ли случайные нотайсы, и попробуйте добавить header content-type application/json


-----
Just do it
 
 Top
wget
Отправлено: 13 Декабря, 2013 - 13:57:48
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Deonis,

после ничего нет, версия PHP новая, локалка.

Panoptik,

добавил заголовок, а как проверить на доп символы?

Полностью php файл выглядит так

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. header('Content-type: application/json; charset=utf-8');
  4. require_once('connect.php');
  5.  
  6. $search = $_REQUEST['name'];
  7. $result = mysql_query("SELECT * FROM book WHERE author = '$search' OR title = '$search'", $link);
  8. $total = mysql_num_rows($result);
  9.  
  10. for ($i = 1; $i <= $total; $i++) {
  11. $row = mysql_fetch_array($result);
  12.  
  13. $title = $row['title'];
  14. $author = $row['author'];
  15. $price = $row['price'];
  16. $nums = $row['nums'];
  17.  
  18. $json = array('title'=>$title,'author'=>$author,'price'=>$price,'nums'=>$nums);
  19.  
  20. echo json_encode($json, JSON_UNESCAPED_UNICODE);
  21.  
  22. }
  23. ?>
  24.  


Пока рассчитан на вывод 1 строки, потом перепишу на вывод нескольких значений.
 
 Top
IllusionMH
Отправлено: 13 Декабря, 2013 - 14:00:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




wget, в любом инструменте разработчика откройте урл напрямую и посмотрите что возвращает
 
 Top
Toxa
Отправлено: 13 Декабря, 2013 - 14:02:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 352
Дата рег-ции: Окт. 2008  


Помог: 8 раз(а)

[+]


тогда все в порядке

(Отредактировано автором: 13 Декабря, 2013 - 14:03:24)



-----
Удобный сервис для хранения файлов
 
 Top
wget
Отправлено: 13 Декабря, 2013 - 14:02:37
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




IllusionMH пишет:
wget, в любом инструменте разработчика откройте урл напрямую и посмотрите что возвращает


В том-то и дело, что возвращает идеальную, с точки зрения JSON, строку

CODE (htmlphp):
скопировать код в буфер обмена
  1. {"title":"Мать","author":"Горький","price":"400","nums":"12"}


А вот передавать ее отказывается
 
 Top
IllusionMH
Отправлено: 13 Декабря, 2013 - 14:07:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




wget, попробуйте наверняка

(Отредактировано автором: 13 Декабря, 2013 - 14:07:39)

 
 Top
wget
Отправлено: 13 Декабря, 2013 - 14:14:32
Post Id


Новичок


Покинул форум
Сообщений всего: 41
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Ребят, кажется догадался, копал совсем не там.
Попробовал с латиницей, все работает. А вот кириллица отправляет запрос в php файл непонятной кодировкой и из-за этого проблемы возникают.
Проверил алертом отправляемое значение, выдает

name=%u0420%u041E и т.д....

Неожидал такого подвоха...

Использовал по где-то вычитанному совету escape(передаваемая строка) и попался на кириллице..
(Добавление)
В догонку такой вопрос, возможно ли в php с помощью какой-либо встроенной функции раскодировать escape в нормальные русские буквы?

(Отредактировано автором: 13 Декабря, 2013 - 14:51:15)

 
 Top
IllusionMH
Отправлено: 13 Декабря, 2013 - 14:54:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB