js如何解析url

JavaScript023

js如何解析url,第1张

你要解析出什么东西?

反正所有的东西都在window.location 对象里面:

location.host 返回主机和端口号

location.hostname 返回 web 主机的域名

location.pathname 返回当前页面的路径和文件名

location.port 返回 web 主机的端口 (80 或 443)

location.protocol 返回所使用的 web 协议(http:// 或 https://)

location.hash  返回锚(#后面)

location.href 返回完整的url

location.search 返回参数部分(?后面)

其他的东西比如获取参数值什么的用正则就行了,一个方法搞定:

window.getParam = function (name) {

    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)")

    var r = window.location.search.substring(1).match(reg)

    return r ? decodeURI(r[2]) : null

}

js可以通过以下方法获取url地址的参数:

1、比如有如下url请求:

http://zhidao.baidu.com/question/586494936989579005.html?entry=business_qb&ishq=1

2、可以用一下方法获取参数:

var params = function(str) {

function urldecode(str) {

return decodeURIComponent((str+'').replace(/\+/g, '%20'))

}

function transformToAssocArray( prmstr ) {

var params = {}

var prmarr = prmstr.split("&")

for ( var i = 0i <prmarr.lengthi++) {

var tmparr = prmarr[i].split("=")

params[tmparr[0]] = urldecode(tmparr[1])

}

return params

}

var prmstr = window.location.search.substr(1)

return prmstr != null &&prmstr != "" ? transformToAssocArray(prmstr) : {}

}()

var parseQuery = function(query){

    var reg = /([^=&\s]+)[=\s]*([^=&\s]*)/g

    var obj = {}

    while(reg.exec(query)){

        obj[RegExp.$1] = RegExp.$2

    }

    return obj

}

var jerry = parseQuery("name=jerry&age=1")

console.log(jerry)

var tom = parseQuery("name= tom &age=12&gender&")

console.info(tom)