2013-08-29 43 views
0

我想小寫一個查詢字符串並獲取值,即使URL是大寫字母。不能小寫QueryString

這是作品 - 我能得到的值:

?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]; 
} 
+1

可以在'瓦爾= []推''lowercase',像'哈希[0] .toLowerCase()',還可以使用「 getQueryString(「serialid」)。toLowerCase()「 – Satpal

+0

我會在切分/分割字符串之前使用toLowerCase()函數。 –

+0

是否有任何理由需要閱讀這些參數不區分大小寫?如果你想要處理查詢字符串,你應該知道這些參數的確切名稱(包括他們的情況)。你試圖在這裏實現的是懶惰。 – matewka

回答

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

使用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/

+0

如果僅返回其中一個參數,那麼創建參數數組的原因是什麼? – matewka

+0

我認爲它更好地小寫這個函數的返回值,這種方式也可以用在你不想小寫查詢字符串 – DavidB

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將包含在關鍵小寫從URL中的所有變量:值對。要訪問的變量,並確保它總是小寫,你可以箱子另一個幫手:

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

var serialid = getQueryVar('SerialID', window.location.search); 
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] : ''; 
}