如何从url查询中删除参数
how to remove parameters from url query?
我正在尝试从url查询字符串中删除一些参数。
我有一组要删除的参数:
var queryParamsToRemove = ['destination','formName'];
我试图做的是搜索url中的每个参数,并使用RegExp
将其删除。类似这样的东西:
for (param in queryParamsToRemove){
patt = new RegExp(param,'g');
queryString = queryString.replace('&' + patt + '=' + /*?=&/g,'');
}
但这不起作用,我想是因为语法问题。
这是我在项目中经常使用的一个函数,它允许您获取关联数组中的所有GET参数:
function urlGet()
{
var t = location.search.substring(1).split('&');
var f = new Object();
for (var i = 0; i < t.length; i++)
{
var x = t[i].split('=');
f[x[0]] = x[1];
}
return f;
}
您可以使用此函数获取所有参数,然后使用delete
方法从数组中删除您不想要的参数。
var parameters = urlGet();
delete parameters.destination;
delete parameters.formName;
现在您只需要构建一个新的查询字符串。
var query = '?';
for (var prop in parameters)
{
query += prop + '=' + parameters[prop] + '&';
};
query = query.substr(0, query.length - 1);
现在,把它添加到你的基本url,你就完成了!
要回答您真正的问题:
for (param in queryParamsToRemove){
queryString = queryString.replace(new RegExp('[&'?]' + queryParamsToRemove[param] + '=.*(&?)', 'g'), ''1');
}
这应该行得通。
否则,您可以使用这样的函数:JavaScript/jQuery中的$.param()逆函数(只需从函数名中删除jQuery
,就可以在没有任何库的情况下使用它)。
类似这样的东西:
unparam = function (value) {
var
// Object that holds names => values.
params = [],
// Get query string pieces (separated by &)
pieces = value.split('&'),
// Temporary variables used in loop.
pair, i, l;
// Loop through query string pieces and assign params.
for (i = 0, l = pieces.length; i < l; i++) {
pair = pieces[i].split('=', 2);
// Repeated parameters with the same name are overwritten. Parameters
// with no value get set to boolean true.
params[decodeURIComponent(pair[0])] = (pair.length == 2 ?
decodeURIComponent(pair[1].replace(/'+/g, ' ')) : true);
}
return params;
};
var query = unparam(querystr);
for(var i in queryParamsToRemove) {
delete query[queryParamsToRemove[i]];
}
将查询字符串转换为数组,从中可以删除值并将其转换回查询字符串。如果你使用jQuery,你可以使用jQuery.param()
否则,制作自己的函数应该不会太难。
现在要将查询数组转换为字符串,我们可以执行以下操作:
reparam = function (queryArray) {
var res = [];
for(var i in queryArray) {
res.push(i + "=" + queryArray[i]);
}
return res.join('&');
}
var queryString = reparam(query);
好的,找到了一些有效的东西!
for (param in queryParamsToRemove) {
queryString = queryString.replace(new RegExp('&(' + queryParamsToRemove[param] + '=)+(('w)*(.)*)*&', 'g'), '&');
}
相关文章:
- 删除处于抽象状态的参数angular
- JS:删除带有接受参数的处理程序的事件侦听器
- 谷歌应用脚本中的 UrlFetchApp.fetch 删除 url 参数
- getJSON()-如何删除数据参数前面的AND符号
- 可以't获取此函数以删除基于javaScript中后续参数的特定元素
- 使用Javascript从url中删除参数
- 使用正则表达式删除网址参数
- 通过删除一个参数及其值来清理 URL
- 从 JavaScript 中的参数中删除参数
- 从请求 URL 中删除参数
- 从查询字符串中删除参数而不重新加载
- 以不正确的顺序从绑定中删除2.0参数
- 使用jQuery或JavaScript从url中删除参数
- 从url中删除参数
- 如何在URL中删除参数并在地址栏中显示它,而不会在Javascript中引起重定向
- 从url中删除参数无效
- 从URL中删除参数
- 不能使用javascript删除参数
- 在重定向后从url中删除参数
- 如何从url查询中删除参数