使用new URL拼接PHP API查询参数失败,URL编码异常问题
解决URLSearchParams换行符双重编码问题
问题核心是双重编码导致的差异:
- 旧写法里,你手动把数组用
%0A拼接成字符串,直接拼到URL中,浏览器不会对已编码的%0A再处理 - 用
URLSearchParams.append时,方法会自动对参数值做URL编码,如果你传入的是已经带%0A的字符串,它会把%编码成%25,最终变成%250A
修正代码
直接用换行符\n拼接数组,再传给append,让URLSearchParams帮你完成正确的编码:
let url = new URL('myUrl/search', getBaseUrl()) url.searchParams.append('surnames', allData.join('\n'));
验证结果
生成的URL会和旧写法一致:search?surnames=smith%0Ajordan,因为URLSearchParams会自动把\n编码为%0A,避免了双重编码。
内容的提问来源于stack exchange,提问作者Garnosny
相关产品推荐
相关产品推荐

