P粉1477476372023-08-18 09:43:27
由于您需要它且您的服务器支持它,只需在最后修复它
const myUrl = new URL("http://www.example.com/?"); let params = myUrl.searchParams; params.set('$param1', '60'); params.set('$param2', '100'); console.log(myUrl.toString().replace(/%24/g,"$"))
P粉9860280392023-08-18 09:07:27
在您的情况下,$
字符被编码为%24
,因为它是URL中的保留字符。 URLSearchParams
对象的set
方法会自动对这些字符进行编码,以确保生成的字符串是一个有效的URL。
然而,如果您想按原样包含$
字符,您可以通过手动构建查询字符串来绕过自动编码:
const myUrl = new URL("http://www.example.com/?"); let params = ['$param1=60', '$param2=100'].join('&'); myUrl.search = params; console.log(myUrl.toString()); // 输出:http://www.example.com/?$param1=60&$param2=100
这将给您所需的输出,但请注意,根据URL规范,这可能不是一个有效的URL,因为$
是一个保留字符。这可能会导致某些服务器或API出现问题。
如果您控制您正在与之交互的服务器或API,并且您确信它可以处理查询字符串中带有$
字符的URL,则此方法应该有效。否则,通常最安全的做法是使用URLSearchParams
提供的自动编码。
请确认此解决方案是否对您有效,或者是否需要进一步协助。