Проблемы с JSON-декодированием - PullRequest
0 голосов
/ 12 ноября 2010

Когда я публикую текст с помощью Ajax, например:

var text = encodeURIComponent(transtext);

и получаю его с помощью PHP:

$text=$_POST['text']

, кажется, что PHP автоматически декодирует закодированную строку.Есть ли способ избежать этого?

Хорошо, вот моя оригинальная строка Json, которую я хочу опубликовать с помощью ajax:

{"1":"\\"sdfsdfsdf" as&das&d ","2":"asdasd"}

Я должен закодировать URIComponent строку внутри, чтобы я мог опубликовать ееjson.strigify, который не кодирует &:

{"1":"%22asdasd%5C%22asdasd%22asdasd%26asdasd","2":"asdasd"}

Но когда я получаю строку в PHP, "make fail jsondecode, потому что я получаю

POST={"1":""sdfsdfsdf" as&das&d ","2":"asdasd"}

Есть идеи?

1 Ответ

1 голос
/ 12 ноября 2010

Эта функция (encodeURIComponent()) не производит JSON.

Создает строку в кодировке URL, которая автоматически декодируется сервером. Я не понимаю, почему вы этого не хотите.

URL-кодирование является чистой транспортной кодировкой, ее цель в жизни состоит в том, чтобы убедиться, что данные, отправляемые на сервер, пригодны для передачи через HTTP GET или POST, и что они не искажаются в пути. То, что сервер декодирует его для вас перед заполнением массивов $_GET, $_POST и $_REQUEST, является правильным решением. Он гарантирует, что данные находятся в той же форме, в которой они находились до того, как были отправлены с клиента.

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