40 lines
1.5 KiB
JavaScript
Executable File
40 lines
1.5 KiB
JavaScript
Executable File
function QueryParser(str) {
|
|
/******************** QueryParser **********************
|
|
********************* by Airshow **********************
|
|
*** http://www.daniweb.com/forums/member512379.html ***
|
|
********* Please keep this attribution intact *********/
|
|
if (str) {
|
|
str = unescape(str);
|
|
if (str.indexOf("?") === 0) { str = str.substring(1); }
|
|
var args = str.split("&");
|
|
for (var i = 0; i < args.length; i++) {
|
|
var pair = args[i].split("=");
|
|
if (pair.length >= 1) {
|
|
var prop = pair.shift();
|
|
this[prop] = (pair.length == 1) ? pair[0] : (pair.length > 1) ? pair.join('=') : '';
|
|
}
|
|
}
|
|
}
|
|
this.set = function (prop, value) { return this[prop] = value; };
|
|
this.clear = function (prop) {
|
|
if(typeof this[prop] !== 'undefined') {
|
|
this.set(prop, null);
|
|
return true;
|
|
}
|
|
else { return false; }
|
|
};
|
|
this.build = function (baseURL, hashName) {
|
|
baseURL = (!baseURL || typeof baseURL !== 'string') ? '?' : (baseURL.indexOf("?") === -1) ? (baseURL + '?') : baseURL;
|
|
hashName = (!hashName || typeof hashName !== 'string') ? '' : (hashName.indexOf("#") === -1) ? ('#' + hashName) : hashName;
|
|
var strArray = [];
|
|
for (var prop in this) {
|
|
if (typeof this[prop] !== 'undefined' && typeof this[prop] !== 'function' && this[prop] !== null) { strArray.push([prop, '=', this[prop]].join('')); }
|
|
}
|
|
return baseURL + strArray.join('&') + hashName;
|
|
};
|
|
this.buildLink = function (baseURL, linkTxt) {
|
|
var url = this.build(baseURL);
|
|
return [ '<a href="', url, '">', ((!linkTxt) ? url : linkTxt), '</a>' ].join('');
|
|
};
|
|
}
|