I have used the following snippet a couple of times and figured that it might candidate to being rolled into the main distribution. Not sure if it should go in Base or Async.
extendURL = function(url, parameters) {
var parts = url.split(/\?/);
var base = parts[0];
var args = MochiKit.Base.update(
MochiKit.Base.isUndefinedOrNull(parts[1]) ? {} : MochiKit.Base.parseQueryString(parts[1]),
MochiKit.Base.isUndefinedOrNull(parameters) ? {} : parameters);
var sanitised = {};
for (key in args) {
if (!MochiKit.Base.isUndefinedOrNull(args[key])) {
sanitised[key] = args[key];
}
}
if (keys(sanitised).length == 0) {
return base;
}
return base + "?" + MochiKit.Base.queryString(sanitised);
}
test:
console.log(extendURL("http://example.com/")); // -> http://example.com/
console.log(extendURL("http://example.com/?foo=bar")); // -> http://example.com/?foo=bar
console.log(extendURL("http://example.com/?foo=bar", {foo: 42})); // -> http://example.com/?foo=42
console.log(extendURL("http://example.com/?foo=bar", {hux: "flux", ding: "dong"})); // -> http://example.com/?foo=bar&hux=flux&ding=dong