如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递
Posted
技术标签:
【中文标题】如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递【英文标题】:How to pass an array containing multiple arrays as a parameterized URL with JavaScript 【发布时间】:2021-03-22 15:16:49 【问题描述】:使用 javascript,我试图弄清楚 如何将包含多个数组的 JSON 序列化数组作为参数化 URL 传递。
我已经阅读了多篇关于 *** 的相关文章——但它们只涉及非常基本的奇异数组。[1]
[1]How to pass an array as a URL parameter?
以下是围绕我的特定用例的上下文,其中涉及位于两个不同域上的两个独立网站(A 和 B):
网站 A:
本网站具有使用 javascript、AJAX、jQuery 的购物车功能,并利用 localStorage 来存储添加到购物车中的产品。
一旦用户准备好结账——我们会将他们重定向到网站 B 以完成结账过程。
购物车数据示例:
下面的序列化 JSON 数据显示了两个不同产品的数据。每个产品都有 6 个与之关联的唯一键。
[
"cid":"68",
"d":"12/26/2020",
"tti":"75687708",
"tt":"0800",
"tn":"1",
"q":"4"
,
"cid":"67",
"d":"01/09/2021",
"tti":"75688769",
"tt":"0909",
"tn":"1",
"q":"2"
]
最终结果 URL 可能的样子:
https://www.website-b.com/checkout?cid=68,67&d=12/26/2020,01/09/2021&tti=75687708,75688769&tt=0800,0909&tn=1,1&q=4,2
网站 B:
本网站将使用 php 解析 URL,以获取每个产品的详细信息以进一步处理(即:产品查找和验证等)。
验证产品后,结帐页面将被填充,用户可以完成付款和结帐。
【问题讨论】:
A 和 B 是否在同一个域中? @Michel 不,他们在不同的域中。 如果我们接受 ~2k 限制as a given,那么您可以简单地用 6 个项目 as JSON 对上述结构进行编码,您仍然会得到只有大约 500 个字符。添加正确的 URL 编码,它会增加一倍。只是http_build_query
,传递这个“标准”查询字符串,在这个例子中大约有500到600个字符,所以我可能不会费心在这里发明自己的格式。
【参考方案1】:
URL的概念本身没有限制,但浏览器的URL是有限制的。
是的,你可以传递一个数组。
但是为什么要在 URL 参数中传递数据呢?我建议您使用 POST 方法并将您的数据以 json 格式发送到正文中
【讨论】:
如何同时实现 POST 和重定向?以上是关于如何使用 JavaScript 将包含多个数组的数组作为参数化 URL 传递的主要内容,如果未能解决你的问题,请参考以下文章
ShareCode不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?