采用爱可信

问题描述:

这是常见的通过具有多个值的参数作为一个GET查询字符串传递对象与多个值作为一个GET查询字符串参数:采用爱可信

http://server/status?stat=a&stat=b 

一个人如何创造这种类型的查询字符串在JS中使用axios库?创建一个对象,其中的参数名称是键和值是多个值的阵列创建一个查询字符串:

​​

这是从什么服务器预期的格式不正确。这可以在axios中完成吗?

常见的是通过具有多个值的参数作为在查询字符串GET

这决不是一个标准。不同的语言,框架实施不同的解决方案。在Authoritative position of duplicate HTTP GET query keys上看到这个问题。

这可以在axios中完成吗?

Axios documentation

在Node.js的,你可以使用查询字符串模块如下:

var querystring = require('querystring'); 
axios.post('http://something.com/', querystring.stringify({ foo: 'bar'}); 

您还可以使用QS库。

qs library支持数组。

另一种方法是使用Connect

更新

的QS库支持阵列,但仅当该参数被后缀[]

var paramsString = "q=URLUtils.searchParams&topic[]=api&topic[]=bar" 

或者,URLSearchParams API提供getAll()方法:

var paramsString = "q=URLUtils.searchParams&topic=api" 
var searchParams = new URLSearchParams(paramsString); 

searchParams.getAll("topic"); // ["api"] 

这在IE中不起作用,但可以使用polyfill url-search-params

+0

URLSearchParams API也可以根据Axios文档使用。谢谢@sgtdck – flashmatrix

+0

我试过qs库,但它目前不支持1对多键/值对(key = stat,value = 1,2,3 ...)。 URLSearchParams接口仍然是一个有效的解决方案。该API在IE中不受支持,但可以使用polyfill [url-search-params](https://github.com/WebReflection/url-search-params)。 – flashmatrix

+0

@flashmatrix我更新了答案,但重新阅读您的评论我没有意识到你需要1:许多键/值对。你的意思是'?key = stat&value = 1,2,3'这会导致'stat = [1,2,3]'? – sgtdck