2017-05-29 88 views
0

这里是URL:删除传递给URL作为数组的一个URL查询字符串?

www.example.com/?param%5B%5D=A&param%5B%5D=B 

%5B%5D部分是[]传递param作为数组,这是在URL编码。现在

,我想删除的参数之一,期望的输出是:

www.example.com/?param%5B%5D=B 

...我已经寻找这一点,但什么也没发现! 所有的答案都是关于删除单个值参数,而不是多个。

UPDATE:

我不知道该参数的准确位置,即URL可以是这样的:

www.example.com/?test=124&test2=456&param%5B%5D=A&param%5B%5D=B 
+0

是那些PARAMS可能是由像'index.php' PHP脚本接收。所以,应该在那里处理。如果你不能,在请求发送之前它已经被处理。 –

+0

@LouysPatriceBessette这些是搜索参数。我想删除其中的一个并重新加载页面。用户应该可以在浏览器中通过点击每个参数的“x”关闭按钮 –

+0

我看到了...所以你必须得到URL并执行字符串操作来分割参数......然后用它来根据用户选择重新构建URL(如复选框或按钮)。 –

回答

1

这里是如何提取PARAMS为例来自网址。

现在如何在用户用户交互表单(UI)上使用它们取决于您。

// Use this to get the document location: 
 
var ActualURL = document.location.href; 
 
console.log("This snippet URL: "+ActualURL); 
 

 

 
// Only for this demo, I "simulate" a URL. 
 
// ActualURL is overwritten here. 
 
var ActualURL = "www.example.com/?param%5B%5D=A&param%5B%5D=B"; 
 
console.log("FAKED URL: "+ActualURL); 
 

 
var domain = ActualURL.split("?")[0]; 
 
console.log("Domain: "+domain); 
 

 
var params = ActualURL.split("?")[1]; 
 

 
var param_array = params.split("&"); 
 

 
for (i=0;i<param_array.length;i++){ 
 
    console.log("Param #"+i+": "+param_array[i]); 
 
} 
 

 
console.log("Rebuilted URL with only param #2: "+domain+"?"+param_array[1]);

+0

非常感谢。问题是我不知道所需参数的数组索引,我只知道这个值,例如:'param [] = A',它可能是索引= 1或索引= 2或3。它与正则表达式寻找'A' –

+0

我的意思'param [] = A'的位置可能是不同的,例如:'www.example.com/?test=2112&test2=2¶m[]=E¶m[]=A¶m[]= B' –

+0

我明白了......但并不重要,你在评论中说道:“用户应该可以在浏览器中通过点击每个参数的斧头关闭按钮来做到这一点。每一个......然后在提交时,用用户选择的重建网址,这个命令真的没有关系 –

1

你可以把URL的WebAPI的优势。

https://developer.mozilla.org/en-US/docs/Web/API/URL

var base = 'http://www.example.com/' 
 
var query = '?param%5B%5D=A&param%5B%5D=B'; 
 

 
var url = new URL(base + query); 
 

 
var params = new URLSearchParams(url.search); 
 

 

 
var filteredParams = params.getAll('param[]') 
 
    .filter(function(el) { 
 
    return el !== "A"; 
 
    }).map(function(el){ 
 
    return ['param[]', el]; 
 
    }); 
 

 
var newParams = new URLSearchParams(filteredParams); 
 

 
var url = new URL(base + '?' + newParams.toString()); 
 
console.log(url.toString());

+3

请注意,浏览器对此API的支持是有限的 – charlietfl

+0

谢谢,但我不知道'param [] = A'的确切位置。 url可能是这样的:'www.example.com/?test=2112&test2=2¶m[]=E¶m[]=A¶m [] = B' –

+0

谢谢让我试试吧! –

相关问题