繁体   English   中英

替换URL中的参数并刷新页面

[英]Replace the parameter in URL & refresh the page

我的默认网址就像

http://localhost:4444/index.html?file=sample

我有一个包含各种文件名的下拉列表,我想通过单击下拉列表来替换参数sample
对于每个更改,应使用现有参数更改URL。

我试着跟着,

location.href = location.href + "filename" ;

但它不会取代文件名。

你可以试试这个:

location.search = location.search.replace(/file=[^&$]*/i, 'file=filename');

location.search属性仅包含URL的查询部分,因此您不必担心URL的任何其他部分(例如域或哈希)将被修改。
此外,正则表达式将仅替换file参数。 当您在查询中有其他参数时,它很有用。

一种方法是:

location.href = location.origin + location.pathname + '?file=filename';

但这只会在你有一个参数之后才有效? 如果你有更多 - 你需要解析它们并重新申请。

欢迎来到2018年,您现在可以大都使用URLSearchParams处理解析和更换你

var params = new URLSearchParams(location.search);
params.set('file', 'sample');
window.location.search = params.toString();

URLSearchParams将根据需要将参数替换或添加到查询字符串。

window.location.search中没有现有的params时,我调整了@matewka的答案,使其更加健壮

var filename = 'myFilename.csv';

var paramName = 'file';
var newParam = paramName + '=' + filename;
if(window.location.search){
  var regex = new RegExp(paramName + '=[^&$]*', 'i');
  window.location.search = window.location.search.replace(regex, newParam);
}else{
  window.location.search = newParam;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM