JavaScript獲取query是前端開發必備技能之一。query是指url中"?"后面的參數,我們經常在網址中看到"?"的形式,例如:https://www.baidu.com/s?wd=JavaScript&rsv_spt=1&rsv_iqid=0x9b50f81500026fa1&rsv_t=9d77LTEt2fqlbJJMk4n%2BG5qlqdHkZFQK9Mx1CjzkDJnmxcMB1TNGSgYzrczqT8GJwu0i",其中 "wd=JavaScript&rsv_spt=1&rsv_iqid=0x9b50f81500026fa1&rsv_t=9d77LTEt2fqlbJJMk4n%2BG5qlqdHkZFQK9Mx1CjzkDJnmxcMB1TNGSgYzrczqT8GJwu0i"就是query。獲取query非常常見的應用場景是做搜索框,也可以通過query來進行其他的頁面跳轉等操作。下面我們就來詳細介紹一下JavaScript獲取query的方法。
方法一:使用location.search獲取query。
//獲取url中的query var query = location.search.substring(1); console.log(query);
方法二:使用正則表達式獲取query。
//使用正則表達式獲取query的鍵值對 var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null) return unescape(r[2]); return null;
方法三:使用URLSearchParams。
//使用URLSearchParams獲取query const params = new URLSearchParams(window.location.search) console.log(params.get('name'))
以上三種方法都可以很方便地獲取URL中的query,但是需要注意的是,使用正則表達式獲取query在處理較為復雜的URL時可能出現錯誤,因此建議在簡單的場景下使用。
在獲取query后,我們還可以對query做進一步的處理,例如獲取某個參數的值,或者將query轉換成對象等操作。下面是一些示例:
例如,我們需要獲取名字為"name"的參數值:
var query = location.search.substring(1); var name = query.split('=')[1]; console.log(name);
我們也可以把query轉換成一個鍵值對的對象:
function parseQueryString(query) { var reg = /([^=&\s]+)[=\s]*([^&\s]*)/g; var obj = {}; while (reg.exec(query)) { obj[RegExp.$1] = RegExp.$2; } return obj; } console.log(parseQueryString(location.search.substring(1)));
以上是一些常見的操作,當然還有其他較為高級的處理方法,比如將query解析成數組等。掌握了JavaScript獲取query的方法,我們就可以更加便捷地操作URL中的參數,提高效率,同時也為自己的前端開發能力加分。