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]   

> Без описания
Nanto
Отправлено: 26 Октября, 2015 - 10:44:31
Post Id


Новичок


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


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




Отдаю на сервер данные из клиента в json. Записываю их в файл в этом формате, получается что-то типа:
CODE (javascript):
скопировать код в буфер обмена
  1. {"id":"1","a":"1","b":"2","c":"3","d":"4"}
  2. {"id":"2","a":"1","b":"2","c":"3","d":"4"}
  3. ...

Запись идёт через:
PHP:
скопировать код в буфер обмена
  1. $current = json_encode($str["str"]);
  2. file_put_contents($file, $current, FILE_APPEND | LOCK_EX);

Потом по запросу отдаю их обратно клиенту. Проблема в том, что данные возвращаются не в формате json или даже массива, а просто как набор строк. Ну т.е. единичную строку браузер обрабатывает нормально, а вот на 2 и более уже спотыкается. В принципе понятно почему (хотя файербаг нормально разбирает json из нескольких строк, но вот сам JS отказывается).
Вопрос: самая простая конструкция чтобы корректно отдать клиенту массив json? Тут регулярку надо включчать или есть какие-то операторы для подобного обёртывания.
На выходе надо наверное что-то типа^
CODE (javascript):
скопировать код в буфер обмена
  1. [{..}, {..}, {..}]
 
 Top
Faraon-san
Отправлено: 26 Октября, 2015 - 11:40:01
Post Id



Посетитель


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


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




CODE (javascript):
скопировать код в буфер обмена
  1. eval('{"id":"2","a":"1","b":"2","c":"3","d":"4"}')
 
 Top
Viper
Отправлено: 26 Октября, 2015 - 11:43:36
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




У вас невалидный json
Сохраняйте так

CODE (htmlphp):
скопировать код в буфер обмена
  1. [
  2. {"id":"1","a":"1","b":"2","c":"3","d":"4"},
  3. {"id":"2","a":"1","b":"2","c":"3","d":"4"}
  4. ]

Ну и желательно отдавать заголовок header('Content-type: application/json');


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
SAD
Отправлено: 26 Октября, 2015 - 11:44:39
Post Id



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


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


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




За eval вешать нужно.

JSON.parse в помощь
 
 Top
Viper
Отправлено: 26 Октября, 2015 - 11:44:47
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Faraon-san зачем костыль?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 26 Октября, 2015 - 11:46:29
Post Id



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


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


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




SAD пишет:
За eval вешать нужно
EventListener?
 
 Top
Nanto
Отправлено: 26 Октября, 2015 - 11:52:34
Post Id


Новичок


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


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




SAD пишет:
За eval вешать нужно.

JSON.parse в помощь

JSON.parse не работает. Да я и так браузеру указываю что данные приходят в json. $.ajax в этом случае вроде сам парсить должен.
(Добавление)
Viper пишет:
У вас невалидный json
Сохраняйте так

CODE (htmlphp):
скопировать код в буфер обмена
  1. [
  2. {"id":"1","a":"1","b":"2","c":"3","d":"4"},
  3. {"id":"2","a":"1","b":"2","c":"3","d":"4"}
  4. ]

Ну и желательно отдавать заголовок header('Content-type: application/json');


Так в том-то и дело - каким образом так сохранить? Я в php, как свинья в апельсинах.
Данные серверу приходят по одной такой строке:

Одну записали. Пришла вторая - что с ней делать? Дёргать первую, конкатенировать, раставлять синтаксис и записывать? Или как?
 
 Top
Viper
Отправлено: 26 Октября, 2015 - 12:40:25
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Nanto пишет:
Одну записали. Пришла вторая - что с ней делать? Дёргать первую, конкатенировать, раставлять синтаксис и записывать? Или как?

входящие данные какого вида?
Можно просто считывать до закрывающей ] и добавлять. Насколько много данных в одном файле может быть?

Собстно для вас тема и ответ http://stackoverflow.com/a/21725885/345874

(Отредактировано автором: 26 Октября, 2015 - 12:42:56)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Nanto
Отправлено: 26 Октября, 2015 - 14:45:11
Post Id


Новичок


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


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




Viper пишет:
входящие данные какого вида?
Можно просто считывать до закрывающей ] и добавлять. Насколько много данных в одном файле может быть?

Собстно для вас тема и ответ http://stackoverflow.com/a/21725885/345874


Данные отправляю как plain text такого формата:
CODE (javascript):
скопировать код в буфер обмена
  1. data: ({id: id, str: str}),

В одном файле не думаю что больше 20 таких строк будет.

Спасибо. Сделал реализацию по ссылке - теперь на клиенте разбор корректно происходит. Тему можно закрывать, наверное.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB