json字符串在url中传递,由urlencode编码

时间:2018-04-24 12:20:46

标签: php json .htaccess codeigniter

我正在使用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"}'

但是在网址中不接受它,它在浏览器中出现Object not found!错误。

  

找不到对象!

     

在此服务器上找不到请求的URL。如果您手动输入了URL,请检查拼写,然后重试。

     

如果您认为这是服务器错误,请与网站管理员联系。       错误404

我尝试更改$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';,但它对我不起作用。

3 个答案:

答案 0 :(得分:0)

假设您的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' ) );

答案 1 :(得分:0)

如果你通过以下方式,则必须传递函数中的参数。

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; }

答案 2 :(得分:0)

你通过的方式不是一个正确的方法。如果需要获取并解码该值,请在控制器函数中使用以下方法

  

我不知道哪一个是控制器&函数在你的代码中,我猜myproject是一个控制器。所以,我在segment

中传递了第3个参数
// 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',
)