Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: JSON добавляет лишний символ "\" два раза в каждую переменную.  (Прочитано 19647 раз)
0 Пользователей и 1 Гость смотрят эту тему.
edikreg
Интересующийся

ua
Offline Offline

« : 09-01-2012 16:49 » 

У Вас на сайте есть прекрасная статься посвященная запросам JSON

В ней идет речь такого плана:
Код:
\u0021

после json_encode() превратится в:

Код:
\\u0021

а после «лечения» станет такой:


Как решить проблему с добавлением \   ?
[{\"id\":\"1\",\"position\":2},{\"id\":\"3\",\"position\":3},{\"id\":\"5\",\"position\":4},{\"id\":\"7\",\"position\":5},{\"id\":\"4\",\"position\":1}]
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 09-01-2012 17:16 » 

а что по этому поводу говорят функции из статьи from_json() to_json?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
edikreg
Интересующийся

ua
Offline Offline

« Ответ #2 : 09-01-2012 17:22 » 

использую таким образом:
в javascript отправляю через Ajax JSON запрос в скрипт PHP
в javascript использую JSON.stringify(переменная);
в php использую json_decode($_POST['переменная'], true );

и что удивительно локально все работает верно(DENWER), на хостинге (на двух пробовал) добавляет \


from_json() to_json? - это ведь javascript функции?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 09-01-2012 17:25 » 

Вы статью читали?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
edikreg
Интересующийся

ua
Offline Offline

« Ответ #4 : 09-01-2012 17:42 » 

да прочитал, прекрасная статья, но я новичок, и увы не могу понять как мне с ее помощью решить данную проблему Жаль
не подскажете?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 09-01-2012 20:12 » 

edikreg, статья о PHP, а не о JavaScript. Уточни вопрос.

На всякий случай: речь об этой статье?
PHP. Что такое JSON и как с ним бороться.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
edikreg
Интересующийся

ua
Offline Offline

« Ответ #6 : 09-01-2012 20:57 » 

edikreg, статья о PHP, а не о JavaScript. Уточни вопрос.

На всякий случай: речь об этой статье?
PHP. Что такое JSON и как с ним бороться.

Да Вы указали статью абсолютно верно.
Вопрос заключается в JSON
уже второй день не могу понять в чем ошибка, я всегда сам ошибки находил, но Google в поисковый запрос не включает символ -    \

у меня в PHP скрипте не работает корректно json_decode($_POST['переменная'], true ); , или же передается запрос неверно.

вот код запроса:

Код: (Javascript)
$.ajax({
                        type: "POST",
                        url: "updateList-test.php",
                        data: "orderRows=" + JSON.stringify(orderJSON),
                        // Выводим то что вернул PHP

                        error: function (data, status, e){alert(e);},
                        success: function(theResponse){
                                                $("#response").html(theResponse);
                                                $("#response").slideDown('slow');
                                                slideout();
                                                }
                        });

в PHP получил и для теста вывожу переменную которую передал с JavaScript:

Код: (PHP)
$a = $_POST['orderRows'];
echo "<br/>a = ".$a;

на экране выводиться -

[{\"id\":\"1\",\"position\":2},{\"id\":\"3\",\"position\":3},{\"id\":\"5\",\"position\":4},{\"id\":\"7\",\"position\":5},{\"id\":\"4\",\"position\":1}]
а должно быть так - [{"id":"1","position":2},{"id":"3","position":3},{"id":"5","position":4},{"id":"7","position":5},{"id":"4","position":1}]


проблема только на сервере в интернете, на локалке все почему то корректно! шаманская ошибка!
я не просил бы у Вас помощи, уже просто не знаю что делать!( я далеко не нуб в PC, всегда находил решение проблем на форумах, а тут пришлось самому создавать тему
Выбрал именно Ваш форум, такой статьи (профессиональной) на просторах СНГ по JSON не нашел.  
« Последнее редактирование: 09-01-2012 21:28 от RXL » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 09-01-2012 21:31 » 

Нужно определить, кто навставлял слешей. Варианта два: PHP (согласно настройкам) или твоя программа (например, функцией addslashes). На этот случай полезно на сервере держать снифер.
Читаем мануал: magic_quote_gpc
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
edikreg
Интересующийся

ua
Offline Offline

« Ответ #8 : 09-01-2012 22:05 » 

Да RXL, Вы абсолютно правы, я прочитал про magic_quote_gpc . У меня на хостинге он включен.

Проблему решилась очень просто :
$a = stripslashes($a); // функция удаляет экранирования

Спасибо Вам за помощь! Надеюсь и я кому то смогу помощь на этом форуме.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 10-01-2012 03:18 » new

Неверно! Завтра хостер выключит эту вредную фичу и твоя программа перестанет работать. Там же, в описании фичи есть ссылка на функцию, которая проверяет значение параметра.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines