2016-08-13 78 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

它的工作原理,谢谢。 –

相关问题