【问题标题】:reading multiple url parameters in javascript [duplicate]在javascript中读取多个url参数[重复]
【发布时间】:2019-01-31 13:37:47
【问题描述】:

我想在我的 url 中传递多个参数,如下所示: http://your-url/scriptname?response_code=591&response_description=Unsuccessful&reference_code=354d6728a9c1ef0&transaction_id=1535121422&trans_type=deposit

如何在 javascript 中阅读它们?如何读取多个 url 参数? getParameterByName() 可以有多个参数吗? 谢谢。

【问题讨论】:

  • 那些称为查询字符串参数的参数,您可以自己读取/解析它们或使用一些为您执行此操作的库。 location.search 将是包含所有这些的字符串

标签: javascript html


【解决方案1】:
<script>
    let url = new URL('http://your-url/scriptname?response_code=591&response_description=Unsuccessful&reference_code=354d6728a9c1ef0&transaction_id=1535121422&trans_type=deposit');
    let params = new URLSearchParams(url.search.slice(1));

    let obj = {};
    for(let pair of params.entries()) {
        obj[pair[0]] = pair[1]    //push keys/values to object
    }
    console.log(obj)
</script>

访问here了解更多信息。

【讨论】:

    【解决方案2】:
    var myUrl = ' http://your-url/scriptname?response_code=591&response_description=Unsuccessful&reference_code=354d6728a9c1ef0&transaction_id=1535121422&trans_type=deposit';
    
    var GetParameters = function (url) {
        var splitParametersFromUrl = url.split('?');
        var spliteParameters = splitParametersFromUrl[1].split('&');
    
        var param = function (name, value) {
            this.Name = name,
                this.Value = value
        }
        var resualt = new Array();
        for (var i = 0; i < spliteParameters.length; i++) {
            var item = spliteParameters[i].split('=');
            var itemParam = new param(item[0], item[1]);
            resualt.push(itemParam);
        }
    
        return resualt;
    }
    
    var resualt = GetParameters(myUrl);
    
    console.log(resualt);
    

    结果: 数组(5) 0 : 参数 {名称:“response_code”,值:“591”} 1 : 参数 {名称:“response_description”,值:“不成功”} 2 : 参数 {名称:“reference_code”,值:“354d6728a9c1ef0”} 3 : 参数 {名称:“transaction_id”,值:“1535121422”} 4 : 参数 {名称:“trans_type”,值:“存款”}

    祝你好运

    【讨论】:

      【解决方案3】:

      很简单,通过location.search获取参数。拆分查询,解码组件;

      下面的代码是一个自执行函数,可以根据需要处理当前窗口的url,并返回一个可以调用的作用域函数。

      let getParameterByName = function() {
          let queries = location.search.substring(1).split('&'),
              processed = {};
          for (let query of queries) {
              let [name, value] = query.split('=');
              processed[decodeURIComponent(name)] = value? decodeURIComponent(value) : '';
          }
      
          return function(name) {
              if (typeof processed[name] !== 'undefined')
                  return processed[name];
              else
                  return null; 
          };
      }();
      

      用法示例:

      var response_code = getParameterByName('response_code'),
         response_description = getParameterByName('response_description');
      

      注意如果url中不存在查询,则返回null

      【讨论】:

        猜你喜欢
        • 2013-11-21
        • 2020-06-16
        • 2011-06-04
        • 2021-01-18
        • 2013-04-11
        • 2010-10-24
        • 2013-03-05
        • 2019-02-09
        • 2013-12-14
        相关资源
        最近更新 更多