Layui open 新界面后使用 JS 获取 URL 参数

8,521 阅读1分钟

MedusaSorcerer的博客


使用 Layui 打开新界面时, 可能会传递一些参数, 如详情页,我会传递一个详情 ID 字段作为标识, 再由详情页的 JS 代码通过 ID 参数进行请求获得数据, 我测试了以下代码:

layui.use(['layer'], function () {
    var router = layui.router();
    var id = router.search.id;
});

可能是由于我的方法不对, 最终无论传递怎么样的数据, router.search 所获得对象始终是空对象 {}, 所以不得不另辟蹊径。

实现

使用 window.location.search.substr(1) 拿到 URL 中参数字符串, 再利用正则数据进行获取, 最终的我们仅仅需要使用 getQueryString('id') 就可以拿到 ID 的数据内容。

function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return decodeURI(r[2]);
    }
    return '';
}

优化方案

感谢大佬(question在掘金)的提醒, 采用 URLSearchParams 是一个非常不错的选择, 具体代码如下:

url = new URL('https://moas.medusasorcerer.com?a=2&b=1&c=abc')
params = new URLSearchParams(url.search.slice(1))
params.getAll('a')
params.get('c')




为达目的,不择手段的写了很多冗余代码,哈哈哈~
我是个混子