在javascript中读取多个url参数[重复]

Posted

技术标签:

【中文标题】在javascript中读取多个url参数[重复]【英文标题】:reading multiple url parameters in javascript [duplicate] 【发布时间】: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 将是包含所有这些的字符串 【参考方案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

【讨论】:

以上是关于在javascript中读取多个url参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中使用 URL 的 GET 参数 [重复]

使用javascript在包含特殊字符的URL中传递参数[重复]

使用JavaScript显示URL的参数段[重复]

在JS中获取没有值的URL参数[重复]

使用 post 参数导航到 Javascript 中的新 URL [重复]

javascript中正则实现读取当前url中指定参数值方法。