繁体   English   中英

通过urlencode编码的url中传递的json字符串

[英]json string passed in url which is encoded by urlencode

我正在使用CodeIgniter3.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。 如果您手动输入网址,请检查拼写,然后重试。

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

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

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

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

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

您通过的方式不正确。 如果需要获取并解码该值,请在控制器功能中使用以下方法

我不知道您的代码中哪个是控制器和功能,我想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',
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM