我有一个URL字符串:http:/some.other.com/#/app/
。
我想将其设为具有特定查询参数的字符串:http:/some.other.com/#/app/?my-param=whatever
我试图这样做:
function addQueryParam(url, key, value) {
const newUrl = new URL(url)
newUrl.searchParams.set(key, value)
return newUrl.toString()
}
addQueryParam('http:/some.other.com/#/app/', 'my-param', 'whatever')
我希望有以下网址:
http:/some.other.com/#/app/?my-param=whatever
但是结果是:
http://some.other.com/?my-param=whatever#/app/
也许我错过了一些东西,但是我猜想有很多应用程序,例如angular,vue,我想在URL字符串的中间使用hash进行反应。那么在这种情况下如何正确添加查询参数呢?
最佳答案
评论部分是正确的,此信息将无法解决。但是,如果您只是在执行客户端逻辑,那么没有什么可以阻止您。以下是如何实现您所寻找的示例。
function addHashQueryParam(url, key, value) {
const existing = (url.lastIndexOf('?') > url.lastIndexOf('#')) ?
url.substr(url.lastIndexOf('?') + 1) : '';
const query = new URLSearchParams(existing);
query.set(key, value)
return `${url.replace(`?${existing}`, '')}?${query.toString()}`;
}
let url = 'http:/some.other.com/#/app/';
url = addHashQueryParam(url, 'my-param', 'whatever');
console.log(url)
url = addHashQueryParam(url, 'my-second-param', 'whomever');
console.log(url)
关于javascript - 如何使用哈希将查询参数添加到网址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61141112/