当我尝试在查询字符串的末尾添加一个id时,JS会在查询字符串中添加不必要的与号和'='符号。
我正在尝试这样的事情:
http://sample_site/report/file/list?f%5B%5D=1111
但是当我在控制台中查看结果时,我得到了:
http://sample_site/report/file/list?f%5B%5D=&f=1111
这是我的JS函数,用于构建URL对象:
buildTileFilter(){
let url = new URL('http://sample_site/report/file/list?f%5B%5D');
let query_string = url.search;
let search_params = new URLSearchParams(query_string);
search_params.set('f', 1111);
url.search = search_params.toString();
let new_url = url.toString();
return new_url;
}
答案 0 :(得分:2)
“%5B%5D”部分被视为参数名称的一部分。您必须将其添加到要设置的参数名称中才能获得所需的结果。这是字符串“ []”的编码值,因此,为了得到结果,代码应为:
buildTileFilter(){
let url = new URL('http://sample_site/report/file/list?f%5B%5D');
let query_string = url.search;
let search_params = new URLSearchParams(query_string);
search_params.set('f[]', 1111);
url.search = search_params.toString();
let new_url = url.toString();
return new_url;
}