简体   繁体   English

如何将 javascript 字典转换为编码的 url 字符串?

[英]How do I turn a javascript dictionary into an encoded url string?

I'd like to get something like我想得到类似的东西

?key=value?key=value

out of a js dictionary that is从一个 js 字典中

{
    key:value,
    key:value
}

If using jQuery, you can use jQuery.param :如果使用 jQuery,您可以使用jQuery.param

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

Otherwise, here is a function that does it:否则,这是一个 function :

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"}));

The same in ECMAScript 2016:在 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

Or, as single-liner:或者,作为单线:

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

There is a much simpler way to do this now:现在有一种更简单的方法可以做到这一点:

API for URLSearchParams is here URLSearchParams 的URLSearchParams在这里

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM