js解析url參數


1、采用正則,這也是現在使用最為方便的

 function getQueryString(name) {
        const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        const urlObj=window.location;
        var r =urlObj.href.indexOf('#')>-1? urlObj.hash.split("?")[1].match(reg) : urlObj.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]); return null;
    }

首先是定義一個正則,將傳入的參數傳入其中。

然后就是window.location.search,search()是查找字符串指定的字符,默認返回第一個字符的位置,如果沒有則返回-1,不過這里的search卻不是這樣使用的,我們把window.location打印出來看一下

很明顯window.location是一個對象,其中search是它的一個屬性,對應的是href中?及以后的字符。

然后就是substr(1),substr(index,num)是截取從index開始數量為num的字符,index是必須的,num不填的情況下默認返回之后所有的,所以substr(1)就是返回?以后的字符

math()用來返回字符串匹配的結果,如果找到了就返回數組,在加g的全局情況下,返回所有結果,在沒有全局的情況下返回[匹配文本、文本相關信息]以及兩個屬性index就是找到的位置,input就是用來查找的字符串。

最后就是返回查找到的相關信息,不過為什么是match返回數組的第三個數,還不是很懂,有人懂話可以交流一下。非常感!

2、利用循環

function GetRequest() {
    var url = location.search; //獲取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        console.log(strs)
        for(var i = 0; i < strs.length; i ++) {
            theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}

首先就是跟正則一樣,獲取“?”及之后的字符,然后就是創建一個新的對象用來存儲一會解析的字符信息,然后就是利用“&”將其分割為數組開始循環,再將其個根據“=”進行切割,並將其設為在之前新建對象的屬性。最后返回對象就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM