美文网首页
地址栏(URL)参数含有特殊符号的处理

地址栏(URL)参数含有特殊符号的处理

作者: 鹿啦啦zz | 来源:发表于2021-12-21 10:37 被阅读0次

    地址栏(URL)参数含有特殊符号的处理

    背景:

    当你的参数中含有 & 等特殊符号
    例如:?redirect=a=1&b=2
    我们期望的是a=1&b=2 作为redirect 的值,

    {
      redirect:  'a=1&b=2',
    }
    

    但是实际会解析成

    {
      redirect:  'a=1',
      b:2
    }
    

    解决方案:

    我们需要对特殊符号转码

    方案1:(不推荐)
    https://blog.csdn.net/qq_41994014/article/details/107960372

    let token = this.$route.query.token;
       if (token) {
        // url地址栏中特殊字符转义
          token = token
            .replace(/\=/g, "%3D")
            .replace(/\+/g, "%2B")
            .replace(/[\s]/g, "%2F")
            .replace(/\?/g, "%3F")
            .replace(/\#/g, "%23")
            .replace(/\&/g, "%26");
       }
    

    方案2:(推荐)
    其实可以用URl编码函数

    encodeURIComponent('=') // '%3D'
    

    如果是解码可以用

    decodeURIComponent('%3D') // =
    

    URL 查询参数

    URLSearchParams

    对象转字符串

    var a =  new URLSearchParams({a:1,b:2})
    a.toString() // =>  'a=1&b=2'
    

    字符串转对象

    var a =  new URLSearchParams('a=1&b=2')
    const paramObj = Object.fromEntries(a)
    console.log(paramObj) // {a: '1', b: '2'}
    

    相关文章

      网友评论

          本文标题:地址栏(URL)参数含有特殊符号的处理

          本文链接:https://www.haomeiwen.com/subject/dgdgxrtx.html