微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript 子对象的 URL 查询字符串编码

如何解决JavaScript 子对象的 URL 查询字符串编码

我正在向 API 发送以下数据,但未接收子对象的值。如何在 javascript 中正确地对子对象进行 URL 编码?

数据:

from urllib.parse import quote
urlsafequery = quote(urlquery)

我用来对数据进行 URL 编码的循环代码

    var details = {
      OrderDate: "10-Sep-2020",OrderID: "1011539",Dated: "27-feb-2021",CreatedBy: 0012,tblAuthorityLetterDtls: [
        {
          ProductCode: "0010005",Qty: "1"
        },{
          ProductCode: "0010005",Qty: "5"
        },Qty: "3"
        }
      ]
    }

解决方法

在对象上运行编码代码,我们得到:

OrderDate=10-Sep-2020&OrderID=1011539&Dated=27-feb-2021&CreatedBy=10&tblAuthorityLetterDtls=ProductCode=0010005,ProductCode=0010005,Qty=1,Qty=1&tblAuthorityLetterDtls=ProductCode=0010005,Qty=5,Qty=5&tblAuthorityLetterDtls=ProductCode=0010005,Qty=3,Qty=3

注意:

  1. 这个字符串是一个valid query string per RFC 3986,所以根据规范它不需要被编码。但是,您的 API 提供商 may 已对某些分隔符应用了一些假设,为它们分配了特殊含义,从而使它们“保留”。
    例如,您的 API 提供商可能不允许在单个查询字符串参数中多次使用 =。当然,这只是一个例子。
  2. 此字符串包含重复的子值(每个 ProductCodeQty 出现两次)。

我建议您将整个字符串传递给 encodeURIComponent 并查看它是否有效。如果是,您可以逐渐对查询字符串的每个部分应用 encodeURIComponent 并查看有问题的部分。

否则,您必须通知您的 API 提供商。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。