Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法将查询字符串小写_Javascript - Fatal编程技术网

Javascript 无法将查询字符串小写

Javascript 无法将查询字符串小写,javascript,Javascript,我正在尝试将查询字符串小写并获取值,即使URL使用大写字母 这是有效的-我可以得到值: ?serialid=1234 ?Serialid=1234 $(document).ready(function () { var a = getQueryString("serialid"); $('#SerialIdHP').val(a); }); function getQueryString(key) { var vars = [],

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

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

 ?serialid=1234 
 ?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];
 }
这不起作用-我无法获取值(大写S):

 ?serialid=1234 
 ?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];
 }
我想匹配两种情况

我的脚本:

 ?serialid=1234 
 ?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];
 }
$(文档).ready(函数(){
var a=getQueryString(“serialid”);
$('#SerialIdHP').val(a);
});
函数getQueryString(键){
var vars=[],
搞砸
var hashes=(window.location.href.slice(window.location.href.indexOf('?'))+1.split('&')).toString().toLowerCase();
for(var i=0;i
$(文档).就绪(函数(){
var a=getQueryString(“serialid”).toLowerCase();
$('#SerialIdHP').val(a);
});
函数getQueryString(键){
var vars=[],
搞砸
var hashes=(window.location.href.slice(window.location.href.indexOf('?'))+1.split('&')).toString().toLowerCase();
for(var i=0;i
使用
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);
函数getQueryString(url,键){ var vars=[], 搞砸 var散列=(url.slice(url.indexOf('?'))+1.split('&'); for(var i=0;i
演示:

这里有一个简单的函数,可以完成大部分繁重的工作。它检索对象中的查询变量:

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
将包含url中以小写字母表示的所有变量,并以键:值对的形式显示。要访问该变量并确保其始终为小写,可以装箱另一个助手:

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

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

通常,我反对您在这里尝试实现的方法,因为您应该准确地知道查询参数的名称(包括案例)

不管怎样,你想要的答案是:

$(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] : '';
}

您可以在
vars=[]
中推送
lowercase
,比如
hash[0].toLowerCase()
,还可以使用“getQueryString(“serialid”).toLowerCase()”在分割/拆分字符串之前,我会使用toLowerCase()函数。您有什么理由需要不区分大小写地读取这些参数吗?如果您试图处理查询字符串,您应该知道这些参数的确切名称(包括它们的大小写)。这里您试图实现的是惰性。如果只返回其中一个参数,那么创建参数数组的原因是什么?我认为最好将此函数的返回大小写降低,这样,当您不想将查询字符串的大小写降低时,也可以使用此函数