URLSearchParams获取第一个参数返回null

    技术2022-07-13  87

    问题

    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=@”; 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(’@’))

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

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

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

    Processed: 0.020, SQL: 9