我有一个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/

10-10 01:55