如何使用 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)运算找到数组中缺失的数?

在 JavaScript 中多次重复包含多个元素的数组

如何使用 Javascript 中的动态链接数组发出多个 Axios 请求?

如何找到 JavaScript 数组中包含的最大数?

JavaScript将数组拆分为内部的多个数组[重复]

2020-03-02:在无序数组中,如何求第K小的数?