PHP 削减 GET 请求参数

SM帕特

在我的 PHP 应用程序中,我使用此代码来获取请求

$this->request->get

这将返回所有数据

Array
(
[rt] => extension/dump
[type] => xls
[controller] => list/product
[s] => administration
[token] => s7KO9PkoPmgpQmZjPQOimTbdKMB85uGa
[filters] => {"_search":true,"nd":1542700897278,"rows":20,"page":1,"sidx":"date_modified","sord":"desc","filters":"{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"name\",\"op\":\"cn\",\"data\":\"Lemon 
[Eucalyptus\"}]}"}] => 
)

然而,下一个代码削减了数据

$this->request->get['filters']

仅返回部分数据(请参阅删除“过滤器”的结尾)

{"_search":true,"nd":1542700897278,"rows":20,"page":1,"sidx":"date_modified","sord":"desc","filters":"
{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"name\",\"op\":\"cn\",\"data\":\"Lemon

是否有任何解决方法可以在“过滤器”中获取完整数据?将对象转换为数组无济于事

更新:js 控制台输出

{_search: false, nd: 1542700894743, rows: 20, page: 1, sidx:    "date_modified", …}
filters: "{"groupOp":"AND","rules":[{"field":"name","op":"cn","data":"Lemon & Eucalyptus"}]}"
nd: 1542700897278
page: 1
rows: 20
sidx: "date_modified"
sord: "desc"
_search: true

Request URL: http://blablabla&filters={%22_search%22:true,%22nd%22:1542700897278,%22rows%22:20,%22page%22:1,%22sidx%22:%22date_modified%22,%22sord%22:%22desc%22,%22filters%22:%22{\%22groupOp\%22:\%22AND\%22,\%22rules\%22:[{\%22field\%22:\%22name\%22,\%22op\%22:\%22cn\%22,\%22data\%22:\%22Lemon%20&%20Eucalyptus\%22}]}%22}

请求方式:GET

它与&符号有某种关系吗?

菲尔

假设您在 JS 中创建 URL 和查询参数,您需要所有参数进行编码以在 URL 中使用。

在你的情况...

const filters = {
  "groupOp": "AND",
  "rules": [
    {
      "field": "name",
      "op": "cn",
      "data": "Lemon & Eucalyptus"
    }
  ]
}

const url = `http://blablabla?filters=${encodeURIComponent(JSON.stringify(filters))}`

document.write(`<pre>${url}</pre>`)

注意&in"Lemon & Eucalyptus"已经变成%26


一个额外的问题是某些东西正在对您的请求参数进行 HTML 编码。除非您专门在 HTML 文档中显示信息,否则您不应该这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章