如何在Javascript中创build查询参数?
有没有什么办法来创build查询参数在JavaScript中执行GET请求 ?
就像在Python中一样,你有urllib.urlencode() ,它需要一个字典(或者两个元组列表),并创build一个string,如'var1=value1&var2=value2' 。 
干得好:
 function encodeQueryData(data) { let ret = []; for (let d in data) ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d])); return ret.join('&'); } 
用法:
 var data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 }; var querystring = encodeQueryData(data); 
实用
 function encodeData(data) { return Object.keys(data).map(function(key) { return [key, data[key]].map(encodeURIComponent).join("="); }).join("&"); } 
Zabba在目前接受的答案中提供了一个build议,对我来说是最好的解决scheme:使用jQuery.param() 。
 如果我在原始问题的数据上使用jQuery.param() ,那么代码很简单: 
 var params = jQuery.param({ var1: 'value', var2: 'value' }); 
 variablesparams将是 
 "var1=value&var2=value" 
有关更复杂的示例,input和输出,请参阅jQuery.param()文档。
如果你正在使用原型有Form.serialize
如果您使用的是jQuery ,则有Ajax / serialize
不过,我不知道有什么独立的function可以完成这个function,但是如果你目前没有使用图书馆的话,谷歌searchfunction就会出现一些很有前途的选项。 如果你不是,那么你真的应该因为他们是天堂。
我们刚刚发布了arg.js ,一个旨在彻底解决这个问题的项目。 传统上这是非常困难的,但现在你可以做到:
 var querystring = Arg.url({name: "Mat", state: "CO"}); 
和阅读作品:
 var name = Arg("name"); 
或者得到很多:
 var params = Arg.all(); 
 如果你关心?query=true和Arg.query() ?query=true之间的区别,那么你可以使用Arg.query()和Arg.hash()方法。 
打字稿稍作修改:
  public encodeData(data: any): string { return Object.keys(data).map((key) => { return [key, data[key]].map(encodeURIComponent).join("="); }).join("&"); } 
 就像重新审视这个近10年的问题。 在这个现成的编程时代,最好的select是使用依赖pipe理器( npm )来设置你的项目。 有一个整个的图书馆行业,在那里编码查询string和照顾所有的边缘情况。 这是比较受欢迎的一个 –  
 这个线程指向一些在PHP中转义URL的代码。 有escape()和unescape()这将做大部分的工作,但你需要添加一些额外的东西。 
 function urlencode(str) { str = escape(str); str = str.replace('+', '%2B'); str = str.replace('%20', '+'); str = str.replace('*', '%2A'); str = str.replace('/', '%2F'); str = str.replace('@', '%40'); return str; } function urldecode(str) { str = str.replace('+', ' '); str = unescape(str); return str; }