【问题标题】:Axios get with param arrayaxios 获取参数数组
【发布时间】:2019-02-20 20:23:36
【问题描述】:

我用 axios 创建了一个 get 请求:

this.$axios.get('/cidade/',{
          params: {
            q: result,
          }
        })
        .then((response) => {
          this.cidades = response.data;
        })
        .catch(function (error) {
          // handle error
          // eslint-disable-next-line
          console.log(error);
        })
        .then(function () {

          // always executed
        });

但我的结果是一个数组 [123asdas1,asdasd2312],当 axios 执行请求时,他创建了该 url:

http://localhost:8081/cidade/?q[]=5b9cfd0170607a2e968b0a1e&q[]=5b9cfd0170607a2e968b0a1d

所以可以从 q 参数中删除 [] 吗?怎么样?

tks

【问题讨论】:

  • 它的做法是在 url 中发送参数数组的正确方法。您的服务器应将其解析为单个 q 参数,其值为 ["5b9cfd0170607a2e968b0a1e"、"5b9cfd010607a2e968b0a1d"] 的数组。您的服务器不是那样解析参数吗?因为它应该是。如果不是,那么您应该尝试找出原因。

标签: javascript vue.js axios


【解决方案1】:

当编写一个字段有多个值的查询字符串时(即如果它是一个数组),那么没有标准说明它必须如何在查询字符串中编码,但是大多数 Web 服务器都接受这种语法:

http://localhost:8081/cidade/?q[]=value1&q[]=value2

这就是 axios 默认使用它的原因。检查您的网络服务器,看看它是否将参数作为数组正确读取。

如果您想强制以其他方式对其进行编码,只需将数组转换为您想要的任何格式的字符串并将其作为单个值发送:

this.$axios.get('/cidade/', {
  params: {
    q: JSON.stringify(result)
  }
})
http://localhost:8081/cidade/?q=[value1,value2]

[] 字符可能是 percent-encoded。)

一般来说,这种语法无法区分字符串"[value1,value2]" 和数组[value1, value2],因此Web 服务器将不得不选择其中一个。同样,这完全取决于您的网络服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2020-05-10
    • 2020-05-13
    • 2021-11-30
    • 2022-12-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多