2017-08-30 70 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