js获取 url 参数值的方法总结

简介: js获取 url 参数值的方法总结

今天小编碰到一个朋友问这么一个问题,怎么在一个页面中获取另外一个页面url传过来的参数呢?最初一开始很本能的想到了用 split("?"),这样一步步的分解出需要的参数。但是想了一下,这样写起来比较绕,也不易懂,肯定会有更加简单的方法的!最后在网上找到了几个简单实用的方法,通过小编的测试验证是没有问题的,现在将具体的方法总结如下:


1、split拆分法

通过对返回的URL字符串截取的方式获取参数值。

  1)、函数一:获取URL中的参数名及参数值的集合

/**
 * [获取URL中的参数名及参数值的集合]
 * 示例URL:"http://test/getIndex/indexRequest.html?uid=admin&passWord=123456&fid=1314&name=阿豪";
 * @param {[string]} urlStr [当该参数不为空的时候,则解析该url中的参数集合]
 * @return {[string]}       [参数集合]
 */
function GetRequest(urlStr) {
    if (typeof urlStr == "undefined") {
        // 获取url中"?"符后的字符串
        var url = decodeURI(location.search);
    } else {
        var url = "?" + urlStr.split("?")[1];
    }
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}

测试调用方法:

let url = "http://test/getIndex/indexRequest.html?uid=admin&passWord=123456&fid=1314&name=阿豪";
// 第一种:无参数(不传url,直接从当前浏览器的url获取)
let params01 = GetRequest();
console.log(params01);      // {uid: "admin", passWord: "123456", fid: "1314", name: "阿豪"}
console.log(params01['name']);  // 阿豪
// 第二种:传url
let params02 = GetRequest(url);
console.log(params02);      // {uid: "admin", passWord: "123456", fid: "1314", name: "阿豪"}
console.log(params02['name']);  // 阿豪

 2)、函数二:通过参数名获取url中的参数值

/**
 * [通过参数名获取url中的参数值]
 * 示例URL:"http://test/getIndex/indexRequest.html?uid=admin&passWord=123456&fid=1314&name=阿豪";
 * @param  {[string]} queryName [参数名]
 * @return {[string]}           [参数值]
 */
function GetQueryValue(queryName) {
    debugger;
    var query = decodeURI('window.location.search'.substring(1));
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == queryName) {
            return pair[1];
        }
    }
    return null;
}

测试调用方法:

1. let name = GetQueryValue('name');
2. 
3. console.log(name);   // 阿豪

2、正则法

通过对返回的URL字符串,采用正则获取到参数值。

1)、正则法用法一:

/**
 * [通过参数名获取url中的参数值]
 * 示例URL:"http://test/getIndex/indexRequest.html?uid=admin&passWord=123456&fid=1314&name=阿豪";
 * @param  {[string]} queryName [参数名]
 * @return {[string]}           [参数值]
 */
function GetQueryValue(queryName) {
    debugger
    var reg = new RegExp("(^|&)" + queryName + "=([^&]*)(&|$)", "i");
    // 获取url中"?"符后的字符串并正则匹配
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return decodeURI(r[2]);
    } else {
        return null;
    }
}

测试调用方法:

1. let queryVal = GetQueryValue('name');
2. 
3. console.log(queryVal);   // 阿豪

2)、正则法用法二:

/**
 * [通过参数名获取url中的参数值]
 * 示例URL:"http://test/getIndex/indexRequest.html?uid=admin&passWord=123456&fid=1314&name=阿豪";
 * @param  {[string]} queryName [参数名]
 * @return {[string]}           [参数值]
 */
function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    var context = "";
    if (r != null)
        context = r[2];
    reg = null;
    r = null;
    return context == null || context == "" || context == "undefined" ? "" : context;
}

测试调用方法:

1. let queryVal = GetQueryValue('name');
2. 
3. console.log(queryVal);   // 阿豪

3、单个参数的获取方法

/**
 * 获取url中只有一个参数的参数值]
 * 示例URL: "http://test/getIndex/indexRequest.html?name=阿豪";
 * @return {[string]}     [参数值]
 */
function GetRequestValue() {
    // 获取url中"?"符后的字串
    var url = location.search;
    // 判断是否有参数
    if (url.indexOf("?") != -1) {
        // 从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
        var str = url.substr(1);
        strs = str.split("=");
        return strs[1];
    }
    return null;
}

测试调用方法:

1. let queryVal = GetRequestValue();
2. 
3. console.log(queryVal);   // 阿豪
目录
相关文章
|
15小时前
|
存储 JavaScript 前端开发
史上最详细JavaScript数组去重方法(11种)
使用set和Array.from ()方法 array.from可以将set结构转成数组
19 7
|
15小时前
|
JavaScript 前端开发
JavaScript 提供了多种方法来操作 DOM(文档对象模型)
【5月更文挑战第11天】JavaScript 用于DOM操作的方法包括获取元素(getElementById, getElementsByClassName等)、修改内容(innerHTML, innerText, textContent)、改变属性、添加/删除元素(appendChild, removeChild)和调整样式。此外,addEventListener用于监听事件。注意要考虑兼容性和性能当使用这些技术。
6 2
|
15小时前
|
JavaScript 前端开发
在JavaScript中实现模块化开发有多种方法
【5月更文挑战第10天】JavaScript模块化开发可通过CommonJS、AMD和ES6模块实现。CommonJS适用于服务器端,使用`require`和`module.exports`处理模块;AMD(如RequireJS)用于浏览器端,依赖`require`和`define`;ES6模块提供原生支持,使用`import`和`export`。选择方式需考虑项目环境、复杂度和技术栈。
13 4
|
15小时前
|
JavaScript 前端开发
JS tostring()和join()方法
JS tostring()和join()方法
8 1
|
15小时前
|
存储 JavaScript 前端开发
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
8 0
|
15小时前
|
JavaScript 前端开发 索引
js添加、删除、替换、插入元素的方法
js添加、删除、替换、插入元素的方法
12 0
|
15小时前
|
JavaScript 前端开发
JavaScript 循环方法详解
JavaScript 循环方法详解
19 1
|
15小时前
|
JavaScript 前端开发
JavaScript数字方法详解
JavaScript数字方法详解
18 0
|
15小时前
|
存储 JavaScript 前端开发
JavaScript对象方法详解
JavaScript对象方法详解
16 1
|
15小时前
|
存储 JavaScript 前端开发
JavaScript字符串方法详解
JavaScript字符串方法详解
18 0