url查询参数解析
1.获取url的各部分值
举例http://i.cnblogs.com/EditPosts.aspx?opt=11、window.location.href(设置或获取整个 URL 为字符串)var test = window.location.href;alert(test);返回:http://i.cnblogs.com/EditPosts.aspx?opt=12、window.location.protocol(设置或获取 URL 的协议部分)var test = window.location.protocol;alert(test);返回:http:3、window.location.host(设置或获取 URL 的主机部分)var test = window.location.host;alert(test);返回:i.cnblogs.com4、window.location.port(设置或获取与 URL 关联的端口号码)var test = window.location.port;alert(test);返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)5、window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))var test = window.location.pathname;alert(test);返回:/EditPosts.aspx6、window.location.search(设置或获取 href 属性中跟在问号后面的部分)var test = window.location.search;alert(test);返回:?opt=1PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。7、window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)var test = window.location.hash;alert(test);返回:空字符(因为url中没有)
2.将url查询参数通过正则表达式解析成数据字典
function getQueryObject(url) { url = url == null ? window.location.href : url; var search = url.substring(url.lastIndexOf("?") + 1); var obj = {}; var reg = /([^?&=]+)=([^?&=]*)/g; // [^?&=]+表示:除了?、&、=之外的一到多个字符 // [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个) search.replace(reg, function (rs, $1, $2) { var name = decodeURIComponent($1); var val = decodeURIComponent($2); val = String(val); obj[name] = val; return rs; }); return obj; } console.log(getQueryObject('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91')); // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
3.将url查询参数手动解析成数据字典
function getQueryStringArgs(url){ url = url == null ? window.location.href : url; var qs = url.substring(url.lastIndexOf("?") + 1); var args = {}; var items = qs.length > 0 ? qs.split('&') : []; var item = null; var name = null; var value = null; for(var i=0; i