使用JavaScript獲取URL參數(shù)的方法總結(jié)
在 JavaScript 中,獲取 URL 參數(shù)是非常常見(jiàn)的操作,尤其是在 Web 開(kāi)發(fā)中,常常需要獲取查詢字符串(query string)中的參數(shù)值來(lái)控制頁(yè)面展示或進(jìn)行 API 請(qǐng)求等操作。
方法 1: 使用 URLSearchParams 對(duì)象
URLSearchParams 是現(xiàn)代瀏覽器中提供的內(nèi)置對(duì)象,它提供了一種方便的方法來(lái)解析和獲取 URL 中的查詢參數(shù)。
代碼示例
假設(shè)我們有一個(gè)頁(yè)面 URL 為:
https://www.example.com?user=JohnDoe&age=30&city=NewYork
我們想要獲取 URL 中的參數(shù)值 user、age 和 city。
// 獲取當(dāng)前頁(yè)面的 URL const urlParams = new URLSearchParams(window.location.search); // 獲取具體的參數(shù)值 const user = urlParams.get('user'); // 獲取 'user' 參數(shù) const age = urlParams.get('age'); // 獲取 'age' 參數(shù) const city = urlParams.get('city'); // 獲取 'city' 參數(shù) console.log(`User: ${user}`); // 輸出: User: JohnDoe console.log(`Age: ${age}`); // 輸出: Age: 30 console.log(`City: ${city}`); // 輸出: City: NewYork
解釋
1.window.location.search:window.location.search 會(huì)返回 URL 中的查詢部分(包括 ? 號(hào))。比如,https://www.example.com?user=JohnDoe&age=30&city=NewYork 中,window.location.search 會(huì)返回 "?user=JohnDoe&age=30&city=NewYork"。
2.URLSearchParams:它是一個(gè)可以輕松操作 URL 查詢參數(shù)的接口。你可以使用它的 get() 方法來(lái)獲取指定參數(shù)的值。
3.get() 方法:它從查詢字符串中獲取特定的參數(shù)值。如果該參數(shù)不存在,它會(huì)返回 null。
方法 2: 手動(dòng)解析查詢字符串
如果需要兼容舊版本的瀏覽器,或者出于某些其他需求,你可以通過(guò)原生 JavaScript 手動(dòng)解析查詢字符串。
代碼示例
function getQueryParam(name) { const urlParams = window.location.search.substring(1); // 獲取查詢字符串(去掉問(wèn)號(hào)) const params = new URLSearchParams(urlParams); return params.get(name); } // 測(cè)試 const user = getQueryParam('user'); const age = getQueryParam('age'); const city = getQueryParam('city'); console.log(`User: ${user}`); // 輸出: User: JohnDoe console.log(`Age: ${age}`); // 輸出: Age: 30 console.log(`City: ${city}`); // 輸出: City: NewYork
方法 3: 使用正則表達(dá)式解析查詢字符串
有時(shí),你可能希望使用正則表達(dá)式來(lái)解析 URL 查詢參數(shù),特別是當(dāng)你需要做復(fù)雜的參數(shù)解析時(shí)。這種方法也適用于較老的瀏覽器。
代碼示例
function getQueryParam(name) { const regex = new RegExp('[?&]' + name + '=([^&]*)', 'i'); const result = regex.exec(window.location.search); return result ? decodeURIComponent(result[1]) : null; } // 測(cè)試 const user = getQueryParam('user'); const age = getQueryParam('age'); const city = getQueryParam('city'); console.log(`User: ${user}`); // 輸出: User: JohnDoe console.log(`Age: ${age}`); // 輸出: Age: 30 console.log(`City: ${city}`); // 輸出: City: NewYork
解釋
1.window.location.search:它返回 URL 中的查詢部分(包括 ?)。在我們這個(gè)例子中,它返回 "?user=JohnDoe&age=30&city=NewYork"。
2.RegExp:正則表達(dá)式的模式 [?&]${name}=([^&]*) 用來(lái)匹配查詢字符串中指定參數(shù)的值。
- [?&] 表示參數(shù)名之前可以是 ? 或 &。
- ${name} 是你需要查找的參數(shù)名。
- ([^&]*) 匹配參數(shù)值(直到下一個(gè) & 符號(hào)或者字符串結(jié)束)。
3.decodeURIComponent:由于 URL 編碼可能會(huì)影響參數(shù)值的可讀性(比如空格變成 %20),所以在獲取到參數(shù)后,我們使用 decodeURIComponent() 來(lái)解碼。
方法 4: 通過(guò) window.location 解析完整的 URL
如果需要解析的是整個(gè) URL(不僅僅是查詢部分),你可以使用 window.location 對(duì)象提供的不同屬性(如 href, search 等)來(lái)提取信息。
代碼示例
function getQueryParamFromFullUrl(url, param) { const urlObj = new URL(url); return urlObj.searchParams.get(param); } // 示例 const fullUrl = "https://www.example.com?user=JohnDoe&age=30&city=NewYork"; const user = getQueryParamFromFullUrl(fullUrl, "user"); const age = getQueryParamFromFullUrl(fullUrl, "age"); const city = getQueryParamFromFullUrl(fullUrl, "city"); console.log(`User: ${user}`); // 輸出: User: JohnDoe console.log(`Age: ${age}`); // 輸出: Age: 30 console.log(`City: ${city}`); // 輸出: City: NewYork
解釋
new URL(url):使用 URL 構(gòu)造函數(shù),可以創(chuàng)建一個(gè)新的 URL 對(duì)象,能夠方便地訪問(wèn)各個(gè)部分(協(xié)議、域名、路徑、查詢參數(shù)等)。
searchParams.get():searchParams 屬性提供了一種訪問(wèn) URL 查詢參數(shù)的方式。
實(shí)際項(xiàng)目中的應(yīng)用
在實(shí)際的項(xiàng)目中,獲取 URL 參數(shù)常用于以下場(chǎng)景:
表單提交后的頁(yè)面重定向:你可能需要在 URL 中傳遞狀態(tài)信息,例如表單提交成功后跳轉(zhuǎn)并傳遞用戶 ID 或操作狀態(tài)。
分頁(yè):比如請(qǐng)求列表數(shù)據(jù)時(shí),可能需要傳遞 page 和 limit 等分頁(yè)參數(shù)。
過(guò)濾器/搜索:用戶在頁(yè)面上進(jìn)行篩選或搜索操作時(shí),將篩選條件傳遞到 URL 參數(shù)中,以便能夠重新加載相同的過(guò)濾狀態(tài)。
代碼示例:分頁(yè)功能
// 假設(shè)我們有一個(gè)分頁(yè)功能,URL 如:/products?page=2&limit=20 function getPaginationParams() { const urlParams = new URLSearchParams(window.location.search); const page = urlParams.get('page') || 1; // 默認(rèn)值為 1 const limit = urlParams.get('limit') || 10; // 默認(rèn)值為 10 return { page, limit }; } const { page, limit } = getPaginationParams(); console.log(`當(dāng)前頁(yè): ${page}, 每頁(yè)顯示: ${limit}`);
總結(jié)
獲取 URL 參數(shù)的常見(jiàn)方法有:
使用 URLSearchParams(推薦,適用于現(xiàn)代瀏覽器)。
使用正則表達(dá)式或手動(dòng)解析(適用于老版本瀏覽器)。
使用 window.location 解析完整 URL。
這些方法可以根據(jù)需求靈活選擇。在現(xiàn)代 Web 開(kāi)發(fā)中,URLSearchParams 是最簡(jiǎn)潔、易用的方式。
到此這篇關(guān)于使用JavaScript獲取URL參數(shù)的方法總結(jié)的文章就介紹到這了,更多相關(guān)JavaScript獲取URL參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用JavaScript解析URL參數(shù)為對(duì)象的多種方法
- JavaScript 獲取 URL 中參數(shù)值的方法
- JavaScript 獲取 URL 中參數(shù)值的方法詳解(最新整理)
- JavaScript獲取URL中參數(shù)值的四種方法
- JavaScript獲取當(dāng)前頁(yè)面url參數(shù)的方法詳解
- JavaScript實(shí)現(xiàn)獲取URL中參數(shù)值的4種方法
- JavaScript獲取URL參數(shù)的幾種方法小結(jié)
- JavaScript獲取URL參數(shù)常見(jiàn)的4種方法
- JavaScript獲取URL參數(shù)的四種方法總結(jié)
- js獲取url參數(shù)值的幾種方式詳解
- JS獲取URL網(wǎng)址中參數(shù)的幾種方法小結(jié)
相關(guān)文章
認(rèn)識(shí)Knockout及如何使用Knockout綁定上下文
Knockout簡(jiǎn)稱ko,是一個(gè)輕量級(jí)的javascript類庫(kù),采用MVVM設(shè)計(jì)模式(即Model、view、viewModel),簡(jiǎn)單優(yōu)雅的實(shí)現(xiàn)了雙向綁定,實(shí)時(shí)更新,幫助您使用干凈的數(shù)據(jù)模型來(lái)創(chuàng)建豐富的、響應(yīng)式的用戶界面2015-12-12JavaScript中的FileReader圖片預(yù)覽上傳功能實(shí)現(xiàn)代碼
本文通過(guò)實(shí)例代碼給大家介紹了js中的FileReader圖片預(yù)覽上傳功能,代碼分為html和js代碼兩部分,具體實(shí)現(xiàn)代碼大家參考下本文2017-07-07JS使用reduce()方法處理樹(shù)形結(jié)構(gòu)數(shù)據(jù)
這篇文章主要介紹了JS使用reduce()方法處理樹(shù)形結(jié)構(gòu)數(shù)據(jù),對(duì)樹(shù)形結(jié)構(gòu)數(shù)據(jù)感興趣的同學(xué),可以參考下2021-05-05微信小程序?qū)崿F(xiàn)手機(jī)振動(dòng)效果
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)手機(jī)振動(dòng)效果,手機(jī)振動(dòng)應(yīng)用場(chǎng)景以 wx.vibrateLong() 方法為例結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2023-07-07微信小程序頁(yè)面跳轉(zhuǎn)功能之從列表的item項(xiàng)跳轉(zhuǎn)到下一個(gè)頁(yè)面的方法
這篇文章主要介紹了微信小程序頁(yè)面跳轉(zhuǎn)功能之從列表的item項(xiàng)跳轉(zhuǎn)到下一個(gè)頁(yè)面的方法,結(jié)合具體實(shí)例形式總結(jié)分析了微信小程序頁(yè)面跳轉(zhuǎn)及列表item項(xiàng)跳轉(zhuǎn)頁(yè)面的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11淺談JavaScript中的this指針和引用知識(shí)
this是javascript的一個(gè)關(guān)鍵字,隨著函數(shù)使用場(chǎng)合不同,this的值會(huì)發(fā)生變化。但是總有一個(gè)原則,那就是this指的是調(diào)用函數(shù)的那個(gè)對(duì)象。接下來(lái)通過(guò)本文給大家介紹js中的this指針和引用,非常不錯(cuò),需要的朋友參考下2016-08-08通過(guò)說(shuō)明與示例了解js五種設(shè)計(jì)模式
這篇文章主要介紹了通過(guò)說(shuō)明與示例了解js五種設(shè)計(jì)模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06獲取offsetTop和offsetLeft值的js代碼(兼容)
offsetTop和offsetLeft的值在某些特殊的情況下是會(huì)使用到的,為了實(shí)現(xiàn)值的準(zhǔn)確獲取,本文采用js代碼實(shí)現(xiàn)下,有需求的朋友可以參考下哈2013-04-04比較詳細(xì)的關(guān)于javascript中void(0)的具體含義解釋
比較詳細(xì)的關(guān)于javascript中void(0)的具體含義解釋...2007-08-08