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

时间:2013-10-23 10:09:10

标签: javascript url

我的默认网址就像

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

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

我试着跟着,

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

但它不会取代文件名。

4 个答案:

答案 0 :(得分:12)

你可以试试这个:

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

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

答案 1 :(得分:8)

一种方法是:

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

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

答案 2 :(得分:5)

欢迎来到2018年,您现在可以mostly使用URLSearchParams来处理解析并替换您获取

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

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

答案 3 :(得分:0)

window.location.search

中没有现有的参数时,我调整了@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;
}