JSON строка передается в URL, который кодируется urlencode - PullRequest
0 голосов
/ 24 апреля 2018

Я использую CodeIgniter 3.x.

У пользователя есть эти данные: %7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

Пользователь отправляет мне запрос и передает данные в качестве параметра в URL. Последний параметр в url - это не что иное, как данные пользователей.

http://localhost/codeigniter/myproject/myfunction/%7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

Закодированные данные - не что иное, как строка json, которую он хочет закодировать, а затем отправить мне запрос. Если я проанализирую его с помощью php, то получится: '{"uid":"1234","uname":"kishor"}'

Но это не принято в URL, это выдает мне Object not found! ошибку в браузере.

Объект не найден!

Запрошенный URL не найден на этом сервере. Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку.

Если вы считаете, что это ошибка сервера, обратитесь к веб-мастеру. Ошибка 404

Я пытался изменить $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';, но у меня это не работает.

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Если вы передадите следующий путь, чем аргумент в функции.

http://localhost/codeigniter/myproject/myfunction/%7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

как это

function myfunction($param = ''){ echo $params; }
0 голосов
/ 24 апреля 2018

То, как вы проходите, не является правильным. Если вам нужно получить и декодировать это значение, используйте следующую функцию в вашей функции контроллера

Я не знаю, какой из них является контроллером и функцией в вашем коде, я думаю, myproject является контроллером. Итак, я передаю третий параметр номер 3 в segment

// it will return %7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D
$json_value = $this->uri->segment(3); 
$json_value = (array) json_decode(stripslashes(urldecode($json_value)));

var_export($json_value);

выход

array (
  'uid' => '1234',
  'uname' => 'kishor',
)
0 голосов
/ 24 апреля 2018

Предполагая, что ваш CodeIgniter настроен правильно и правильно маршрутизирует, я рекомендую отправить JSON в качестве параметра $_GET:

http://localhost/codeigniter/myproject/myfunction/?json=%7B%5C%22uid%5C%22%3A%5C%221234%5C%22%2C%5C%22uname%5C%22%3A%5C%22kishor%5C%22%7D

Итак, в CodeIgniter вы можете просто:

json_decode( $this->input->get( 'json' ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...