问题描述
我正在尝试将参数添加到仅路径的url(因为我代码中的其他地方可以解决源问题),但是我在下面的代码中遇到错误,因为它没有将其视为有效的url 。 (编辑:也忘记添加检查以确认路径URL中是否存在“ / checkout /”)
function appendCountryParam(link,tag){
var url = new URL(link);
url.searchParams.append('tag',tag);
return url.href;
}
我想知道是否有一种将参数添加到仅路径url的干净方法。我自己编写了一个函数,但是看起来有点太复杂了,我直接将我的代码从PHP转换为js。
function addTagParam(link,tag) {
if (!link.includes('/checkout/')) {
return link;
}
if (link.includes('?')) {
const removeSlash = link.replace(/\/$/,'');
return `${removeSlash}&tag=${tag}`;
}
const linkWithSlash = link.replace(/\/$|$/,'/');
return `${linkWithSlash}?tag=${tag}`;
}
编辑:我仅在路径中传递url,并且我希望它以相同的格式返回,但是具有指定的参数,所以类似这样:/page/user/winsome/?tag=true
解决方法
像第二个示例一样自己创建字符串是我的首选方法?除非您有很多参数,否则无需增加额外的复杂性。
如果您确实想花哨的话,可以代替URLSearchParams
的实例(在调用.toString
之后),就像在this answer中一样。