URLSearchParams获取第一个参数返回null

问题

js中常使用URLSearchParams来解析url,只要把url作为URLSearchParams的参数传入,就能获取解析后的URLSearchParams对象,通过get()来获取指定的url参数.但是获取url中第一个参数的时候会出现获取值为null的情况.

解决方法

直接上代码

const url = new URL('http://example.com?timeperiod=lasttwentyeightdays&pagesize=20');

const args =  new URLSearchParams(url.search);

多加一步转换即可.

出现问题原因

URLSearchParams 构造函数不会解析完整 URL,但是如果字符串起始位置有 ? 的话会被去除。
var paramsString1 = “http://example.com/search?query=%40”;
var searchParams1 = new URLSearchParams(paramsString1);

searchParams1.has(“query”); // false
searchParams1.has(“http://example.com/search?query”); // true

searchParams1.get(“query”); // null
searchParams1.get(“http://example.com/search?query”); // “@” (equivalent to >decodeURIComponent(’%40’))

var paramsString2 = “?query=value”;
var searchParams2 = new URLSearchParams(paramsString2);
searchParams2.has(“query”); // true

var url = new URL(“http://example.com/search?query=%40”);
var searchParams3 = new URLSearchParams(url.search);
searchParams3.has(“query”) // true

参考:
URLSearchParams returning null for the first query string
URLSearchParams

你可能感兴趣的:(web前端)