js 获取链接地址中的参数
比如,链接地址是:"http://blog.whuang.com/search?username=abc&age=26"
我要获取username参数的值"abc"
方式一:
核心方法
/** * 获取指定的参数值 * @param url3 * @param key * @returns {void|string|XML} */ getParameter: function (url3, key) { var regExp = new RegExp('^.*[?&]' + key + '=([^&=?]*)&?.*$', ''); var parameter = url3.replace(regExp, '$1'); return parameter; }
测试代码:
var url3="http://blog.whuang.com/search?username=abc&age=26"; console.log(urlUtil.getParameter(url3,'age')); url3="http://blog.whuang.com/search?username=abc&age=26"; console.log(urlUtil. getParameter(url3,'username')); url3="http://blog.whuang.com/search?username=abc&age=26&callback=http%3A%2F%2Fc.b.com%3Fid%3D3"; console.log(urlUtil.getParameter(url3,'callback')); url3="http://blog.whuang.com/search?username=&age=26"; console.log(urlUtil.getParameter(url3,'username'));
方式二:使用第三方库purl
地址:https://github.com/allmarkedup/purl
范例:
this.options = { username: purl().param('username') || '', age: purl().param('age') || '', Key: '' };
purl 代码见附件
方式三:
/*** * get request query string * @returns {{}} */ getQueryParams: function () { var i, ilen, strs, keyName, keyValue, params = {}, path = window.location.pathname, url = window.location.href; if (url.indexOf("?") > -1) { var index = url.indexOf("?"); strs = url.substring(index + 1); strs = strs.split("&"); ilen = strs.length; for (i = 0; i < ilen; i++) { var indexEqual = strs[i].indexOf('='); if (indexEqual == -1) { keyName = strs[i]; keyValue = ''; } else { keyName = strs[i].substring(0, indexEqual); keyValue = strs[i].substring(indexEqual + 1) || ""; } if (keyName == "callback") keyValue = decodeURIComponent(keyValue); params[keyName] = keyValue; } } return params; }
调用方式:
getQueryParams().username