Skip to content

Instantly share code, notes, and snippets.

@isaacs
Created March 5, 2009 23:57
Show Gist options
  • Save isaacs/74658 to your computer and use it in GitHub Desktop.
Save isaacs/74658 to your computer and use it in GitHub Desktop.
/**
* Turn an object into a query-string.
* @param obj {Object} The thing to turn into a query string.
* @return {String} The query-string serialization.
* Note: "lang" refers to YAHOO.lang
**/
var objToQueryString = function (obj, name) {
if (lang.isNull(obj) || lang.isUndefined(obj)) {
return name ? encodeURIComponent(name) + '=' : '';
}
if (lang.isNumber(obj) || lang.isString(obj)) {
return encodeURIComponent(name) + '=' + encodeURIComponent(obj);
}
if (lang.isArray(obj)) {
var s = [];
name = name+'[]';
for (var i = 0, l = obj.length; i < l; i ++) {
s.push( objToQueryString(obj[i], name) );
}
return s.join('&');
}
// now we know it's an object.
var s = [];
var begin = name ? name + '[' : '';
var end = name ? ']' : '';
for (var i in obj) if (ownProp(obj,i)) {
s.push(objToQueryString(obj[i], begin + i + end));
}
return s.join("&");
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment