• BOM – 操作 Query


    前言

    ASP.NET Core 写过一篇关于操作 query 的 ASP.NET Core – 操作 Uri 和 Query. 前端偶尔也会需要做出 query.

    URLSearchParams

    之前讲 JavaScript – Fetch 就已经有用到 URLSearchParams 了. 但主要是用来生成 query. 这篇 read / write 都讲.

    Read From URL

    const query = new URLSearchParams(location.search);

    在前端, search 指的就是 ?Query. 

    location.search 返回的是 ?key=value 这样的 string. 它是还没有 decode 的哦.

    new URLSearchParams 初始化传入一个 string, 它就会去 parse 它. 这个 string 最好是以 ? 开头. 或者 search 去掉问号只留下 key=value&key1=value2 这样.

    /path?key=value <-- 这样就不 ok, 会 parse 失败哦.

    get and getAll

    const value =  query.get('key'); // no match return null
    const values: string[] = query.getAll('key'); // no match return empty array

    getAll 是针对 same key 的情况, 比如 'key=value&key=value2'

    获取到的值都是 decode 好了的.

    for of 遍历

    URLSearchParams 是 iterable

    for (const [key, value] of query) {
      console.log("key value", [key, value]);
    }

    如果 same key, 那么会 loop 2 次.

    has, append, delete, toString

    const query = new URLSearchParams();
    const hasKey = query.has("key");
    query.append("key", "= will auto encode"); // auto encode
    query.delete("key");
    query.append("key", "= will auto encode");
    const finalSearch = query.toString(); // not starts with ?
    console.log("finalSearch", finalSearch); // key=%3D+will+auto+encode

    顾名思义, 留意注释的部分就可以了

     

  • 相关阅读:
    统计数据库表中记录数
    在水晶报表中写一个条件判断语句
    数据库范式
    动态控件的新思路
    连续打印问题的解决
    水晶报表中测试纸张的margins
    向报表中传递参数
    JS实现页面跳转
    在dos下访问ntfs
    时间和字符混合处理
  • 原文地址:https://www.cnblogs.com/keatkeat/p/16433157.html
Copyright © 2020-2023  润新知