不能小写QueryString

时间:2013-08-29 08:44:29

标签: javascript

我正在尝试小写查询字符串并获取值,即使URL是大写字母。

这是有效的 - 我可以获得价值:

 ?serialid=1234 

这不起作用 - 我无法获得价值(资本S):

 ?Serialid=1234

我想匹配这两种情况。

我的剧本:

 $(document).ready(function () {

     var a = getQueryString("serialid");
     $('#SerialIdHP').val(a);
 });

 function getQueryString(key) {

     var vars = [],
         hash;
     var hashes = (window.location.href.slice(window.location.href.indexOf('?') + 1).split('&')).toString().toLowerCase();

     for (var i = 0; i < hashes.length; i++) {
         hash = hashes[i].split('=');
         vars.push(hash[0]);
         vars[hash[0]] = hash[1];
     }
     return vars[key];
 }

4 个答案:

答案 0 :(得分:2)

使用toLowerCase()转换密钥

function getQueryString(url, key) {
    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(hash[0].toLowerCase());
        vars[hash[0].toLowerCase()] = hash[1];
    }
    return vars[key.toLowerCase()];
}

var url = "http://something.com?serialid=1234 "
var a = getQueryString(url, "SerialId");
alert(a);

演示:http://jsfiddle.net/T9BsR/1/

答案 1 :(得分:0)

$(document).ready(function () {
    var a = getQueryString("serialid").toLowerCase();
    $('#SerialIdHP').val(a);
});

function getQueryString(key) {

    var vars = [],
        hash;
    var hashes = (window.location.href.slice(window.location.href.indexOf('?') + 1).split('&')).toString().toLowerCase();

    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars[key];
}

答案 2 :(得分:0)

这是一个更简单的功能,可以完成大部分繁重的工作。它检索对象中的查询变量:

function parseQuery(query) {

  var queryvars = {}
    , patt = /[?&]([^&]+)=([^&]+)/g;

  decodeURIComponent(query).replace(patt, function(_, key, val){
    queryvars[key.toLowerCase()] = val;
  });

  return queryvars;
}

var queryvars - parseQuery('?Serialid=1234');
//^ {
//    serialid: "1234"
//  }

queryvars将包含key:value对中url的所有变量。要访问变量并确保它始终是小写的,您可以创建另一个帮助程序:

function getQueryVar(key, query) {
  return parseQuery(query)[key.toLowerCase()];
}

var serialid = getQueryVar('SerialID', window.location.search);

答案 3 :(得分:0)

一般来说,我反对你在这里尝试实现的方法,因为你应该准确知道查询参数的名称(包括个案)。

无论如何,您正在寻找的答案是:

$(document).ready(function () {
    var a = getQueryString("serialid");
    $('#SerialIdHP').val(a);
});

function getQueryString(parameter) {
    var regex = new RegExp(parameter + "=([^&$]*)","i");
    var match = window.location.search.match(regex);
    return match ? match[1] : '';
}