2017-08-30 37 views
0

我有一个数组,看起来像这样languages = [1,2,3,4,5]使用阵列中的GET请求

API调用预期的URL参数为languages=1&languages=2&...

我怎么能使用JavaScript实现这一目标?

我试过JSON.stringify(languages); &只发送languages变量,但我没有得到想要的结果。

我还可以循环阵列上,并随时添加&languages=number为一个字符串,但我料想他会是一个更有效的方法?

在此先感谢

+0

更有效的方式是通过发送POST数组或认沽认购.. –

+0

@MaanusIndov如果它是对某事物的请求,那么它应该是一个GET。我们不知道它是什么,但它看起来确实如此。 – Archer

+0

@Archer好,其真实的,它是很好的使用,如果您要求得到一些数据获取,但没有规则,你必须使用它 。的确,我们不知道是做什么用的请求时,它可以很容易成为一个更新或保存电话,至于某些项目和它的语言,甚至删除要删除哪些语言的呼叫,选项是无限的:) –

回答

5

另一种选择使用Array.prototype.join

var languages = [2,4,6,8] 
 

 
lang_params = 'languages='+languages.join('&languages=') 
 

 
console.log(lang_params)

(按@Quentin和@Amit评论)如果您使用非整其他PARAMS工作,你可能需要编码值,因此它们不会与特殊符号干扰(即&?)。在这种情况下,你可以使用encodeURI

lang_params = languages.map((l)=>'languages='+encodeURIComponent(l)).join('&') 
+0

right @Quentin编辑答案以显示该案例 – jperelli

+0

“更干净”版本将是'languages.map(lang =>'languages ='+ lang).join('&')'。根本不算什么,但... – Amit

+0

感谢@Amit,编辑答案相匹配,对第二部分你的建议 – jperelli

2

URISearchParams API将干净处理这种情况。

它也将这样做是为了使值或键URL安全所需要的数据进行转义处理(在特定的例子,这并不重要,但它是值得关注的为一般情况下)。

// Create an object to describe the data in the query string 
 
var query = new URLSearchParams(); 
 

 
// Add the languages 
 
var languages = [1,2,3,4,5] 
 
languages.forEach(function (language) { 
 
    query.append("language", language); 
 
}); 
 

 
// Explicitly convert to a string 
 
console.log(query.toString());

注有limited browser support at present,所以你可能会希望使用a polyfill