Проводка JSON из скрытого поля формы - PullRequest
4 голосов
/ 13 февраля 2012

Я перехватываю пост формы, используя jQuery.С помощью полей формы я создаю объект JSON, который хранится в скрытом поле формы.Значение, которое передается в поле формы, похоже на следующее:

{"Status" : "Closed", "Location" : "Glasgow", "Date" : "2012-02-15"}

Но если я выведу объект из переменной $ _POST:

echo $_POST['JSON'];

Будет выведено следующее:

{\"Status\" : \"Closed\", \"Location\" : \"Glasgow\", \"Date\" : \"2012-02-15\"}

Я пытался запустить это через stripslashes () и urldecode () , но у меня не было радости.Я понимаю, что я мог бы просто заменить обратную косую черту функцией замены, но это слишком много для взлома.

Кто-нибудь сталкивался с этим malfored JSON в посте раньше?Примечание: Это на заднем конце сайта Wordpress.Я не уверен, может ли это вызвать такой эффект.

Ответы [ 4 ]

2 голосов
/ 13 февраля 2012

Похоже, на вашем сервере magic_qoutes_gpc включен. (http://www.php.net/manual/en/security.magicquotes.what.php)

0 голосов
/ 13 февраля 2012

Хотя мой английский не очень хорош, но я вижу, что это проблема json в php, вы можете использовать json_decode do, может быть преобразован в массив

0 голосов
/ 13 февраля 2012

Другая возможность, которую вы имеете, - это url-кодирование с помощью encodeURIComponent() в javascript вашего json-объекта и urldecode() в php полученного объекта.

Имейте в виду, что encodeURIComponent () в js не совсем то же самоетак как urlencode () в php и аналогично decodeURIComponent () отличается от urldecode (), но в большинстве случаев хорошо работает кодирование в js и декодирование в php и наоборот.

0 голосов
/ 13 февраля 2012

Однажды я столкнулся с той же проблемой, и все, что я делал, это использовал JSON.stringify(), чтобы сохранить его как «Строку» в моем скрытом поле и прочитать результат с помощью метода jquery.parseJSON(). Может быть, это поможет вам! С помощью stringify вы также можете определить заменитель для вашего объекта JSON.
var myJSONText = JSON.stringify(myObject, replacer);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...