• js获取url参数值的几种方式


    一、原生js获取URL参数值:

      比如当前URL为:http://localhost:8080/#/page2?id=100&name=guanxy

    <template>
      <div>
        <div>
          <button style="background-color: orange" @click="getUrlParam">方式一:采用正则表达式获取地址栏参数 (代码简洁,重点正则)</button>
          <p>结果:id={{method1_id}},name={{method1_name}}</p>
        </div>
        <div>
          <button style="background-color: green" @click="getUrlParam2"> 方法二:split拆分法 (代码较复杂,较易理解)</button>
          <p>结果:id={{method2_id}},name={{method2_name}}</p>
        </div>
        <div>
          <button style="background-color: aqua" @click="getUrlParam3"> 方法三:split拆分法(根据参数名获取对应的值)</button>
          <p>结果:id={{method3_id}},name={{method3_name}}</p>
        </div>
      </div>
    </template>
    
    <script>
      export default {
        name: "page2",
        data() {
          return {
            method1_id: '',
            method1_name: '',
            method2_id: '',
            method2_name: '',
            method3_id: '',
            method3_name: '',
          }
        },
        methods: {
          getUrlParam() {
            //为什么window.location.search取值为空?
            //“http://localhost:8080/#/page2?id=100&name=guanxy”那么使用window.location.search得到的就是空(“”)。
            // 因为“?id=100&name=guanxy”串字符是属于“#/page2?id=100&name=guanxy”这个串字符的,也就是说查询字符串search只能在取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。
            this.method1_id = this.getQueryString('id');
            this.method1_name = this.getQueryString('name');
          },
          getQueryString(name) {
            let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
            let url = window.location.hash.split('?')[1].match(reg);
            // console.log(url)
            if (url != null) {
              return decodeURI(url[2])//decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。
            } else {
              return null
            }
          },
          getUrlParam2() {
            let url = window.location.hash.split('?')[1].split("&");
            // console.log(url)
            let paramObj = new Object()
            url.forEach((item, i) => {
              paramObj[item.split('=')[0]] = item.split('=')[1]
            })
            this.method2_id = paramObj.id,
              this.method2_name = paramObj.name
          },
          getUrlParam3() {
            this.method3_id = this.getQueryVariable('id');
            this.method3_name = this.getQueryVariable('name')
          },
          getQueryVariable(variable) {
            let url = window.location.hash.split('?')[1].split("&");
            for (let i = 0; i < url.length; i++) {
              let pair = url[i].split('=');
              if (pair[0] == variable) {
                return pair[1]
              }
            }
            return false
          }
        }
      }
    </script>
    
    <style scoped>
    
    </style>

    页面效果:

    二、Vue 获取URL参数值

      <p>params获取当前路由参数:id={{this.$route.params.id}},name={{this.$route.params.name}}</p>
      <p>query获取当前路由参数:id={{this.$route.query.id}},name={{this.$route.query.name}}</p>
  • 相关阅读:
    SQL考点例题解析
    数据交换技术
    网络安全的攻击手段
    实词和虚词
    VBA代码
    宏代码
    常用模块
    常用模块
    模块和包
    模块介绍
  • 原文地址:https://www.cnblogs.com/cristina-guan/p/11481774.html
Copyright © 2020-2023  润新知