Query-string encoding of a Javascript Object
like this?
serialize = function(obj) { var str = []; for (var p in obj) if (obj.hasOwnProperty(p)) { str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); } return str.join("&");}console.log(serialize({ foo: "hi there", bar: "100%"}));// foo=hi%20there&bar=100%25
Edit: this one also converts recursive objects (using php "array" notation for the query string)
serialize = function(obj, prefix) { var str = [], p; for (p in obj) { if (obj.hasOwnProperty(p)) { var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p]; str.push((v !== null && typeof v === "object") ? serialize(v, k) : encodeURIComponent(k) + "=" + encodeURIComponent(v)); } } return str.join("&");}console.log(serialize({ foo: "hi there", bar: { blah: 123, quux: [1, 2, 3] }}));// foo=hi%20there&bar%5Bblah%5D=123&bar%5Bquux%5D%5B0%5D=1&bar%5Bquux%5D%5B1%5D=2&bar%5Bquux%5D%5B2%5D=3
jQuery has a function for this, jQuery.param()
, if you're already using it you can use that:http://api.jquery.com/jquery.param/
example:
var params = { width:1680, height:1050 };var str = jQuery.param( params );
str
now contains width=1680&height=1050