代码之家  ›  专栏  ›  技术社区  ›  Thomas

赞扬url javascript中的查询字符串

  •  0
  • Thomas  · 技术社区  · 9 年前

    我的url看起来像 http://localhost:13562/Student/RefreshStudents?sort=FirstName&sortdir=ASC&page=1

    现在我正在寻找一个函数,我将传递url和查询字符串名称,然后返回值。

    所以我就这样做了,但没用。

    function getQueryVariable(url,variable) {
        var query = url;
        var vars = query.split('&');
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split('=');
            if (decodeURIComponent(pair[0]) == variable) {
                return decodeURIComponent(pair[1]);
            }
        }
        console.log('Query variable %s not found', variable);
    }
    

    这样打电话

    var x='http://localhost:13562/Student/RefreshStudents?sort=FirstName&sortdir=ASC&page=1'
    
    alert(getQueryVariable(x,'sort'));
    alert(getQueryVariable(x,'sortdir'));
    alert(getQueryVariable(x,'page'));
    

    我在哪里犯的错?

    编辑

    工作代码

    $.urlParam = function(url,name){
        var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(url);
        if (results==null){
           return null;
        }
        else{
           return results[1] || 0;
        }
    }
    
    var x='http://localhost:13562/Student/RefreshStudents?sort=FirstName&sortdir=ASC&page=1'
    
    alert($.urlParam(x,'sort'));
    alert($.urlParam(x,'sortdir'));
    alert($.urlParam(x,'page'));
    

    https://jsfiddle.net/z99L3985/1/

    谢谢

    3 回复  |  直到 9 年前
        1
  •  1
  •   AKHIL K    9 年前

    可能会有以下帮助

       function getUrlVars(url) {
            var vars = {};
            var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
    
                vars[key] = value;
            });
            return vars;
        }
    
        var x='http://localhost:13562/Student/RefreshStudents?sort=FirstName&sortdir=ASC&page=1';
    
        var queryVars = getUrlVars(x);
        alert(queryVars['sort']);
        alert(queryVars['sortdir']);
        alert(queryVars['page']);
    
        2
  •  1
  •   melvnberd    9 年前

    我也是从别的地方得到的。。

    function getQueryVariable(variable)
    {
           var query = window.location.search.substring(1);
           var vars = query.split("&");
           console.log(vars);
           for (var i=0;i<vars.length;i++) {
                   var pair = vars[i].split("=");
                   if(pair[0] === variable){return pair[1];}
           }
           return(false);
    }
    

    到目前为止,它正在做它的工作。 带有url:“ http://urlhere.com/general_journal?from=01%2F14%2F2016&to=01%2F14%2F2016&per_page=25&page=2 "

    if im going to get the 'page' variable result would be : `2`
    console.log(getQueryVariable('page'));
    

    我的 query 变量仅获取 search.substring(1) url的一部分,所以基本上它只得到 from=01%2F14%2F2016&to=01%2F14%2F2016&per_page=25&page=2 url的一部分,然后将其拆分,然后返回在函数调用中指定的字符串参数的值 getQueryVariable('page') 例如

        3
  •  0
  •   Harry Bomrah    9 年前

    也许这有帮助

    var getUrlVars = function(url){
        var vars = [], hash;
        var hashes = url.slice(url.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++){
            hash = hashes[i].split('=');
            vars.push(decodeURIComponent(hash[0]));
            vars[decodeURIComponent(hash[0])] = decodeURIComponent(hash[1]);
        }
        if(vars[0] == url){
            vars =[];
        }
        return vars;
    }
    

    然后在你的代码中

    var params = getUrlVars("http://localhost:13562/Student/RefreshStudents?sort=FirstName&sortdir=ASC&page=1");
    console.log(params["sort"]) // FirstName