原因:
例1: ‘http://a.com/data?id=1&time=2023-06-07’
此时通过 window.location.search 能够正常获取到url中的查询参数 ?id=1&time=2023-06-07
例2:‘http://a.com/#/data?id=1&time=2023-06-07’
此时通过 window.location.search 获取到的参数为空"",这是因为使用了hash导致,因为hash会将url中第一个#后的内容都作为hash内容,所以search为空了.
解决办法一:
把#去掉
解决方法二:
// 用 window.location.hash.split("?")[1];
var search = window.location.hash.split("?")[1];
console.log(search) //id=1&time=2023-06-07
参数如何携带跳转和接收
// 传入携带参数
let data = { study_id: row.study_id, hospital_id: localStorage.getItem('hospital_id'), pageType: 'edit' };
let url = 'http://localhost:5174/'
let params = new URLSearchParams();
for (let key in data) {
params.append(key, data[key]);
}
window.open(url + '?' + params.toString(), '_self');
// 接收参数 hash 模式
let queryString = window.location.hash.split('?')[1]; // 获取问号后面的查询字符串
let params = new URLSearchParams(queryString); // 将查询字符串转换为 URLSearchParams 对象
let studyId = params.get('study_id'); // 获取 study_id 参数的值
let hospitalId = params.get('hospital_id'); // 获取 hospital_id 参数的值
let pageType = params.get('pageType'); // 获取 pageType 参数的值