gpt4 book ai didi

php - 序列化数组并通过 get 方法传递它的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-01 06:01:24 26 4
gpt4 key购买 nike

因此,我使用 ajax 请求来传递一些数据以进行过滤。

然后我使用history.js,这样我就可以更改url并向浏览器添加状态,使其可以后退、前进等。这样,我可以使用ajax请求或普通请求过滤我的数据。到目前为止一切顺利。

我的问题是,在我通过ajax请求传递的数据中有一个数组:

function updateContent(url, state) {
$.ajax({
type: 'GET',
data: {name: state.filter_name, num: state.filter_number,
data: state.filter_data, array: state.filter_array},
url: url,
success: function(msg) {
$('#ajax').html(msg);
}
});

}

这将向此 URL 发出请求:

http: //localhost/Project/Controller/?filter_array%5B%5D=1&filter_array%5B%5D=50&filter_array%5B%5D=70.

我想将此网址传递给history.pushstate

如果我使用 jsenconde 然后手动构建 url,则 url 会略有不同,如下所示:

http://localhost/Project/Controller/?filter_array=["1","50","70"]

虽然它更干净,但我在某处读到不应在 url 中使用 [],但即使我使用这种方式,我也会得到两种类型的 GET url,即 ajax URL ?filter_array%5B%5D= 1&filter_array%5B%5D=50&filter_array%5B%5D=70. 和 json url ?filter_array=["1","50","70"]

所以我只需要一个解决方案,让我只获得一种类型的 GET url,这样我就可以使用相同的 url 来处理 ajax 和普通请求。

最佳答案

传递值数组的标准方法是重复使用 [] 传递名称(url 编码),如第一个示例中所示。

您需要以符合此要求的方式生成 URL...

filter_array[]=1&filter_array[]=2&filter_array[]=3

当然,如您所示进行编码......

filter_array%5B%5D=1&filter_array%5B%5D=2&filter_array%5B%5D=3

如果您坚持使用这种格式,您的代码将更加可移植(例如,ASP.Net 将像许多 PHP 库一样自动执行到 List 的转换)。

有什么原因导致您无法生成这种格式的网址吗?

这里的区别在于,一个是使用标准表单编码,另一个是转换 JSON

关于php - 序列化数组并通过 get 方法传递它的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11199267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com