2016-08-13 125 views
0

我想組合一個鏈接,其中包含從變量中收集的幾個GET參數。例如:什麼是使用JavaScript或jQuery編寫GET參數鏈接的最佳方法

link.php?param1=value1&param2=value2&param3=value3 

在JavaScript中,如果我有變量VAR1,VAR2和VAR3已經設置爲相應的值,我知道該鏈接可以通過連接字符串和變量如下組成:

url = "link.php?param1=" + var1 + "&param2=" + var2 + "&param3=" + var3; 

有沒有更清潔或更好的方法來做到這一點? jQuery中,Ajax請求接受功能可以很容易地設定如下數據參數:

$.ajax({ 
    url: url, 
    data:{ 
    param1: var1, 
    param2: var2, 
    param3: var3 
    } 
}); 

有沒有類似的方式組成的鏈接,但只是將其存儲在變量中,而不是執行一個Ajax請求的?

我知道jquery的.get()函數,它正如文檔中提到的:「使用HTTP GET請求從服務器加載數據。」我不想要這個,我只需要編寫鏈接。

+1

我使用[此模塊(https://www.npmjs.com/package/query-string)來做到這一點。它允許你解析和串化查詢字符串,如'queryString.stringify({color:['taupe','chartreuse'],id:'515'});'。 – HiDeo

回答

2
var makeFullUrl = function (url, params) { 
    return [url, Object.keys(params || {}).map(function (key) { 
     return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]); 
    }).join('&')].join('?'); 
}; 

這就是我製成,而回的功能(預ES2015) - 與基礎URL作爲參數1調用它,並且像

{ 
    param1Name: param1Value, 
    param2Name: param2Value 
} 

這對於ES2015,對於對象laffs

var makeFullUrl = (url, params) => [url, Object.keys(params || {}).map(key => encodeURIComponent(key) + '=' + encodeURIComponent(params[key])).join('&')].join('?'); 
+0

它的工作原理,謝謝。 –

相關問題