【问题标题】:How do I turn a javascript dictionary into an encoded url string? [closed]如何将 javascript 字典转换为编码的 url 字符串? [关闭]
【发布时间】:2011-08-12 19:01:27
【问题描述】:

我想要类似的东西

?key=value?key=value

出一个js字典就是

{
    key:value,
    key:value
}

【问题讨论】:

标签: javascript


【解决方案1】:

如果使用jQuery,可以使用jQuery.param:

var params = { width:1680, height:1050 };
var str = jQuery.param( params );
// str is now 'width=1680&height=1050'

否则,这里有一个函数:

function serialize(obj) {
  var str = [];
  for(var p in obj)
     str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
  return str.join("&");
}
alert(serialize({test: 12, foo: "bar"}));

【讨论】:

  • 现在改用:var str = $.param( params );
【解决方案2】:

现在有一个更简单的方法来做到这一点:

URLSearchParams 的 API 是 here

var url = new URL('https://example.com/');
url.search = new URLSearchParams({blah: 'lalala', rawr: 'arwrar'}); 
console.log(url.toString()); // https://example.com/?blah=lalala&rawr=arwrar

【讨论】:

【解决方案3】:

ECMAScript 2016 也是如此:

let params = { width:1680, height:1050 };
// convert object to list -- to enable .map
let data = Object.entries(params);
// encode every parameter (unpack list into 2 variables)
data = data.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`);
// combine into string
let query = data.join('&');
console.log(query); // => width=1680&height=1050

或者,作为单线:

let params = { width:1680, height:1050 };
Object.entries(params).map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&');
// => "width=1680&height=1050"

【讨论】:

猜你喜欢
  • 2011-11-23
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多