javascript - copiar - procurar um caractere em uma string java




Como posso obter valores de string de consulta em JavaScript? (20)

ES2015 (ES6)

getQueryStringParams = query => {
    return query
        ? (/^[?#]/.test(query) ? query.slice(1) : query)
            .split('&')
            .reduce((params, param) => {
                    let [key, value] = param.split('=');
                    params[key] = value ? decodeURIComponent(value.replace(/\+/g, ' ')) : '';
                    return params;
                }, {}
            )
        : {}
};

Sem jQuery

var qs = (function(a) {
    if (a == "") return {};
    var b = {};
    for (var i = 0; i < a.length; ++i)
    {
        var p=a[i].split('=', 2);
        if (p.length == 1)
            b[p[0]] = "";
        else
            b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
    }
    return b;
})(window.location.search.substr(1).split('&'));

Com uma URL como ?topic=123&name=query+string , o seguinte retornará:

qs["topic"];    // 123
qs["name"];     // query string
qs["nothere"];  // undefined (object)

Método do Google

Rasgando o código do Google, encontrei o método que eles usam: getUrlParameters

function (b) {
    var c = typeof b === "undefined";
    if (a !== h && c) return a;
    for (var d = {}, b = b || k[B][vb], e = b[p]("?"), f = b[p]("#"), b = (f === -1 ? b[Ya](e + 1) : [b[Ya](e + 1, f - e - 1), "&", b[Ya](f + 1)][K](""))[z]("&"), e = i.dd ? ia : unescape, f = 0, g = b[w]; f < g; ++f) {
        var l = b[f][p]("=");
        if (l !== -1) {
            var q = b[f][I](0, l),
                l = b[f][I](l + 1),
                l = l[Ca](/\+/g, " ");
            try {
                d[q] = e(l)
            } catch (A) {}
        }
    }
    c && (a = d);
    return d
}

É ofuscado, mas é compreensível. Não funciona porque algumas variáveis ​​são indefinidas.

Eles começam a procurar parâmetros no URL a partir de ? e também do hash # . Então, para cada parâmetro eles dividem o sinal de igual b[f][p]("=") (que se parece com indexOf , eles usam a posição do caracter para obter a chave / valor). Ao dividi-lo, verifica se o parâmetro tem um valor ou não, se ele tiver armazenado o valor de d , caso contrário, apenas continuará.

No final, o objeto d é retornado, manipulando o escape e o sinal + . Este objeto é como o meu, tem o mesmo comportamento.

Meu método como um plugin jQuery

(function($) {
    $.QueryString = (function(paramsArray) {
        let params = {};

        for (let i = 0; i < paramsArray.length; ++i)
        {
            let param = paramsArray[i]
                .split('=', 2);

            if (param.length !== 2)
                continue;

            params[param[0]] = decodeURIComponent(param[1].replace(/\+/g, " "));
        }

        return params;
    })(window.location.search.substr(1).split('&'))
})(jQuery);

Uso

//Get a param
$.QueryString.param
//-or-
$.QueryString["param"]
//This outputs something like...
//"val"

//Get all params as object
$.QueryString
//This outputs something like...
//Object { param: "val", param2: "val" }

//Set a param (only in the $.QueryString object, doesn't affect the browser's querystring)
$.QueryString.param = "newvalue"
//This doesn't output anything, it just updates the $.QueryString object

//Convert object into string suitable for url a querystring (Requires jQuery)
$.param($.QueryString)
//This outputs something like...
//"param=newvalue&param2=val"

//Update the url/querystring in the browser's location bar with the $.QueryString object
history.replaceState({}, '', "?" + $.param($.QueryString));
//-or-
history.pushState({}, '', "?" + $.param($.QueryString));

Teste de desempenho (método dividido contra o método regex) ( jsPerf )

Código de preparação: declaração de métodos

Código de teste dividido

var qs = window.GetQueryString(query);

var search = qs["q"];
var value = qs["value"];
var undef = qs["undefinedstring"];

Código de teste Regex

var search = window.getParameterByName("q");
var value = window.getParameterByName("value");
var undef = window.getParameterByName("undefinedstring");

Teste no Firefox 4.0 x86 no Windows Server 2008 R2 / 7 x64

  • Método Split : 144,780 ± 2,17% mais rápido
  • Método Regex : 13,891 ± 0,85% | 90% mais lento

Existe uma maneira sem plugin de recuperar valores de string de consulta via jQuery (ou sem)?

Se sim, como? Se não, existe um plugin que pode fazer isso?


URLSearchParams

O Firefox 44+, o Opera 36+, o Edge 17+, o Safari 10.3+ e o Chrome 49+ suportam a API URLSearchParams :

Há um polyfill de URLSearchParams sugerido pelo google para as versões estáveis ​​do IE.

Não é padronizado pelo W3C , mas é um padrão de vida da WhatWG .

Você pode usá-lo no local, mas você precisa remover o ? ponto de interrogação (por exemplo, com .slice(1) ):

let params = new URLSearchParams(location.search);

ou

let params = (new URL(location)).searchParams;

Ou, claro, em qualquer URL:

let url = new URL('https://example.com?foo=1&bar=2');
let params = new URLSearchParams(url.search);

Você também pode obter params usando uma propriedade abreviada de .searchParams no objeto URL, desta forma:

let params = new URL('https://example.com?foo=1&bar=2').searchParams;
params.get('foo'); // "1"
params.get('bar'); // "2" 

Você lê / define parâmetros através da API get(KEY) , set(KEY, VALUE) , append(KEY, VALUE) . Você também pode iterar todos os valores for (let p of params) {} .

Uma implementação de referência e uma página de amostra estão disponíveis para auditoria e teste.


Algumas das soluções postadas aqui são ineficientes. Repetir a pesquisa de expressão regular toda vez que o script precisar acessar um parâmetro é completamente desnecessário, uma única função para dividir os parâmetros em um objeto de estilo de matriz associativa é suficiente. Se você não está trabalhando com a API de histórico do HTML 5, isso é necessário apenas uma vez por carregamento de página. As outras sugestões aqui também não conseguem decodificar a URL corretamente.

var urlParams;
(window.onpopstate = function () {
    var match,
        pl     = /\+/g,  // Regex for replacing addition symbol with a space
        search = /([^&=]+)=?([^&]*)/g,
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
        query  = window.location.search.substring(1);

    urlParams = {};
    while (match = search.exec(query))
       urlParams[decode(match[1])] = decode(match[2]);
})();

Exemplo de querystring:

?i=main&mode=front&sid=de8d49b78a85a322c4155015fdce22c4&enc=+Hello%20&empty

Resultado:

 urlParams = {
    enc: " Hello ",
    i: "main",
    mode: "front",
    sid: "de8d49b78a85a322c4155015fdce22c4",
    empty: ""
}

alert(urlParams["mode"]);
// -> "front"

alert("empty" in urlParams);
// -> true

Isso poderia facilmente ser melhorado para manipular seqüências de consulta de estilo de matriz também. Um exemplo disso está here , mas como os parâmetros no estilo array não estão definidos no RFC 3986 , não poluirei essa resposta com o código-fonte. Para aqueles interessados ​​em uma versão "poluída", veja a resposta de campbeln abaixo .

Além disso, como apontado nos comentários ; é um delimitador legal para pares key=value . Seria necessário um regex mais complicado para manipular ; ou & , o que eu acho desnecessário, porque é raro isso ; é usado e eu diria ainda mais improvável que ambos sejam usados. Se você precisa apoiar ; em vez de & , apenas troque-os no regex.

Se você estiver usando uma linguagem de pré-processamento do lado do servidor, convém usar suas funções JSON nativas para fazer o trabalho pesado para você. Por exemplo, no PHP você pode escrever:

<script>var urlParams = <?php echo json_encode($_GET, JSON_HEX_TAG);?>;</script>

Muito mais simples!


Apenas outra recomendação. O plugin Purl permite recuperar todas as partes do URL, incluindo âncora, host, etc.

Pode ser usado com ou sem jQuery.

O uso é muito simples e legal:

var url = $.url('http://allmarkedup.com/folder/dir/index.html?item=value'); // jQuery version
var url = purl('http://allmarkedup.com/folder/dir/index.html?item=value'); // plain JS version
url.attr('protocol'); // returns 'http'
url.attr('path'); // returns '/folder/dir/index.html'

No entanto, a partir de 11 de novembro de 2014, o Purl não é mais mantido e o autor recomenda o uso do URI.js O plugin jQuery é diferente porque se concentra em elementos - para uso com strings, basta usar URI diretamente, com ou sem jQuery. Código semelhante ficaria assim, mais completo docs here :

var url = new URI('http://allmarkedup.com/folder/dir/index.html?item=value'); // plain JS version
url.protocol(); // returns 'http'
url.path(); // returns '/folder/dir/index.html'

Aqui está a minha tentativa de tornar a excelente solução do Andy E num plug-in jQuery completo:

;(function ($) {
    $.extend({      
        getQueryString: function (name) {           
            function parseParams() {
                var params = {},
                    e,
                    a = /\+/g,  // Regex for replacing addition symbol with a space
                    r = /([^&=]+)=?([^&]*)/g,
                    d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
                    q = window.location.search.substring(1);

                while (e = r.exec(q))
                    params[d(e[1])] = d(e[2]);

                return params;
            }

            if (!this.queryStringParams)
                this.queryStringParams = parseParams(); 

            return this.queryStringParams[name];
        }
    });
})(jQuery);

A sintaxe é:

var someVar = $.getQueryString('myParam');

O melhor dos dois mundos!


Aqui está uma maneira rápida de obter um objeto semelhante ao array PHP $_GET :

function get_query(){
    var url = location.search;
    var qs = url.substring(url.indexOf('?') + 1).split('&');
    for(var i = 0, result = {}; i < qs.length; i++){
        qs[i] = qs[i].split('=');
        result[qs[i][0]] = decodeURIComponent(qs[i][1]);
    }
    return result;
}

Uso:

var $_GET = get_query();

Para a string de consulta x=5&y&z=hello&x=6 isso retorna o objeto:

{
  x: "6",
  y: undefined,
  z: "hello"
}

Eu gosto da solução de Ryan Phelan . Mas eu não vejo nenhum ponto de estender o jQuery para isso? Não há uso da funcionalidade do jQuery.

Por outro lado, gosto da função incorporada no Google Chrome: window.location.getParameter.

Então, por que não usar isso? Ok, outros navegadores não têm. Então vamos criar essa função se ela não existir:

if (!window.location.getParameter ) {
  window.location.getParameter = function(key) {
    function parseParams() {
        var params = {},
            e,
            a = /\+/g,  // Regex for replacing addition symbol with a space
            r = /([^&=]+)=?([^&]*)/g,
            d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
            q = window.location.search.substring(1);

        while (e = r.exec(q))
            params[d(e[1])] = d(e[2]);

        return params;
    }

    if (!this.queryStringParams)
        this.queryStringParams = parseParams(); 

    return this.queryStringParams[key];
  };
}

Esta função é mais ou menos de Ryan Phelan, mas é empacotada de forma diferente: nome claro e sem dependências de outras bibliotecas javascript. Mais sobre esta função no meu blog .


Mantenha-o simples em código JavaScript simples:

function qs(key) {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars[key];
}

Chame de qualquer lugar no código JavaScript:

var result = qs('someKey');

Se você está fazendo mais manipulação de URL do que simplesmente analisando a querystring, você pode achar o URI.js útil. É uma biblioteca para manipular URLs - e vem com todos os sinos e assobios. (Desculpe por auto-publicidade aqui)

para converter sua querystring em um mapa:

var data = URI('?foo=bar&bar=baz&foo=world').query(true);
data == {
  "foo": ["bar", "world"],
  "bar": "baz"
}

(URI.js também "corrige" querystrings ruins como ?&foo&&bar=baz& para ?foo&bar=baz )


Se você estiver usando o jQuery, poderá usar uma biblioteca, como jQuery BBQ: Back Button & Query Library .

... O jQuery BBQ fornece um método completo .deparam() , juntamente com o gerenciamento de estado de hash e os métodos de utilitário de mesclagem e mesclagem de fragmento / consulta.

Editar: Adicionando Deparam Exemplo:

 var DeparamExample = function() {
            var params = $.deparam.querystring();

            //nameofparam is the name of a param from url
            //code below will get param if ajax refresh with hash
            if (typeof params.nameofparam == 'undefined') {
                params = jQuery.deparam.fragment(window.location.href);
            }
            
            if (typeof params.nameofparam != 'undefined') {
                var paramValue = params.nameofparam.toString();
                  
            }
        };

Se você quer apenas usar JavaScript simples, você pode usar ...

var getParamValue = (function() {
    var params;
    var resetParams = function() {
            var query = window.location.search;
            var regex = /[?&;](.+?)=([^&;]+)/g;
            var match;

            params = {};

            if (query) {
                while (match = regex.exec(query)) {
                    params[match[1]] = decodeURIComponent(match[2]);
                }
            }    
        };

    window.addEventListener
    && window.addEventListener('popstate', resetParams);

    resetParams();

    return function(param) {
        return params.hasOwnProperty(param) ? params[param] : null;
    }

})();​

Por causa da nova API de Histórico de HTML e, especificamente, de history.pushState() e history.replaceState() , a URL pode alterar o que invalidará o cache de parâmetros e seus valores.

Essa versão atualizará seu cache interno de parâmetros sempre que o histórico for alterado.


Atualização: set-2018

Você pode usar o URLSearchParams, que é simples e tem um bom suporte ao navegador .

const urlParams = new URLSearchParams(window.location.search);
const myParam = urlParams.get('myParam');

Orignal

Você não precisa do jQuery para esse propósito. Você pode usar apenas alguns JavaScript puro:

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

Uso:

// query string: ?foo=lorem&bar=&baz
var foo = getParameterByName('foo'); // "lorem"
var bar = getParameterByName('bar'); // "" (present with empty value)
var baz = getParameterByName('baz'); // "" (present with no value)
var qux = getParameterByName('qux'); // null (absent)


Nota: Se um parâmetro estiver presente várias vezes ( ?foo=lorem&foo=ipsum ), você obterá o primeiro valor ( lorem ). Não há nenhum padrão sobre isso e os usos variam, veja, por exemplo, esta questão: Posição autoritativa de chaves de consulta HTTP GET duplicadas .
NOTA: A função faz distinção entre maiúsculas e minúsculas. Se preferir o nome do parâmetro sem distinção entre maiúsculas e minúsculas, adicione o modificador 'i' ao RegExp

Esta é uma atualização baseada nas novas especificações do URLSearchParams para obter o mesmo resultado de maneira mais sucinta. Veja a resposta intitulada " URLSearchParams " abaixo.


Code golf:

var a = location.search&&location.search.substr(1).replace(/\+/gi," ").split("&");
for (var i in a) {
    var s = a[i].split("=");
    a[i]  = a[unescape(s[0])] = unescape(s[1]);
}

Exibi-lo!

for (i in a) {
    document.write(i + ":" + a[i] + "<br/>");   
};

No meu Mac: test.htm?i=can&has=cheezburgerexibe

0:can
1:cheezburger
i:can
has:cheezburger

O problema com a resposta principal nessa questão é que os parâmetros não suportados são colocados depois de #, mas às vezes é necessário obter esse valor também.

Modifiquei a resposta para permitir que ela analise uma string de consulta completa com um sinal de hash também:

var getQueryStringData = function(name) {
    var result = null;
    var regexS = "[\\?&#]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec('?' + window.location.href.split('?')[1]);
    if (results != null) {
        result = decodeURIComponent(results[1].replace(/\+/g, " "));
    }
    return result;
};

Roshambo jQuery método não estava cuidando de decodificação URL

http://snipplr.com/view/26662/get-url-parameters-with-jquery--improved/

Acabei de adicionar essa capacidade também ao adicionar a declaração de retorno

return decodeURIComponent(results[1].replace(/\+/g, " ")) || 0;

Agora você pode encontrar a essência atualizada:

$.urlParam = function(name){
var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (!results) { return 0; }
return decodeURIComponent(results[1].replace(/\+/g, " ")) || 0;
}

Aqui está minha edição para esta excelente resposta - com a capacidade adicional de analisar strings de consulta com chaves sem valores.

var url = 'http://sb.com/reg/step1?param';
var qs = (function(a) {
    if (a == "") return {};
    var b = {};
    for (var i = 0; i < a.length; ++i) {
        var p=a[i].split('=', 2);
        if (p[1]) p[1] = decodeURIComponent(p[1].replace(/\+/g, " "));
        b[p[0]] = p[1];
    }
    return b;
})((url.split('?'))[1].split('&'));

IMPORTANTE! O parâmetro para essa função na última linha é diferente. É apenas um exemplo de como alguém pode passar um URL arbitrário para ele. Você pode usar a última linha da resposta de Bruno para analisar o URL atual.

Então, o que exatamente mudou? Com os http://sb.com/reg/step1?param=resultados do URL , será o mesmo. Mas com url http://sb.com/reg/step1?parama solução de Bruno retorna um objeto sem chaves, enquanto o meu retorna um objeto com chave parame undefinedvalor.


Aqui está uma versão estendida da versão do Andy E, "Lidar com strings de consulta no estilo array". Corrigido um erro ( ?key=1&key[]=2&key[]=3; 1foi perdido e substituído por [2,3]), feito algumas pequenas melhorias de desempenho (re-decodificação de valores, recálculo de "[" posição, etc.) e adicionado um número de melhorias (funcionalizado, suporte para ?key=1&key=2, suporte para ;delimitadores) . Deixei as variáveis ​​irritantemente curtas, mas adicionei comentários em abundância para torná-las legíveis (oh, e reutilizei vdentro das funções locais, desculpe se isso é confuso;).

Ele irá lidar com a seguinte querystring ...

? teste = Olá & pessoa = neek & person [] = jeff & person [] = jim e pessoa [extra] = john & test3 & nocache = 1398914891264

... tornando-se um objeto que parece ...

{
    "test": "Hello",
    "person": {
        "0": "neek",
        "1": "jeff",
        "2": "jim",
        "length": 3,
        "extra": "john"
    },
    "test3": "",
    "nocache": "1398914891264"
}

Como você pode ver acima, esta versão lida com alguma medida de matrizes "malformadas", ie - person=neek&person[]=jeff&person[]=jimou person=neek&person=jeff&person=jimcomo a chave é identificável e válida (pelo menos no NameValueCollection.Add do dotNet :

Se a chave especificada já existir na instância NameValueCollection de destino, o valor especificado será adicionado à lista de valores separada por vírgula existente no formato "value1, value2, value3".

Parece que o júri está um pouco fora de chaves repetidas como não há especificação. Nesse caso, várias chaves são armazenadas como uma matriz (falsa). Mas observe que não processo valores com base em vírgulas em matrizes.

O código:

getQueryStringKey = function(key) {
    return getQueryStringAsObject()[key];
};


getQueryStringAsObject = function() {
    var b, cv, e, k, ma, sk, v, r = {},
        d = function (v) { return decodeURIComponent(v).replace(/\+/g, " "); }, //# d(ecode) the v(alue)
        q = window.location.search.substring(1), //# suggested: q = decodeURIComponent(window.location.search.substring(1)),
        s = /([^&;=]+)=?([^&;]*)/g //# original regex that does not allow for ; as a delimiter:   /([^&=]+)=?([^&]*)/g
    ;

    //# ma(make array) out of the v(alue)
    ma = function(v) {
        //# If the passed v(alue) hasn't been setup as an object
        if (typeof v != "object") {
            //# Grab the cv(current value) then setup the v(alue) as an object
            cv = v;
            v = {};
            v.length = 0;

            //# If there was a cv(current value), .push it into the new v(alue)'s array
            //#     NOTE: This may or may not be 100% logical to do... but it's better than loosing the original value
            if (cv) { Array.prototype.push.call(v, cv); }
        }
        return v;
    };

    //# While we still have key-value e(ntries) from the q(uerystring) via the s(earch regex)...
    while (e = s.exec(q)) { //# while((e = s.exec(q)) !== null) {
        //# Collect the open b(racket) location (if any) then set the d(ecoded) v(alue) from the above split key-value e(ntry) 
        b = e[1].indexOf("[");
        v = d(e[2]);

        //# As long as this is NOT a hash[]-style key-value e(ntry)
        if (b < 0) { //# b == "-1"
            //# d(ecode) the simple k(ey)
            k = d(e[1]);

            //# If the k(ey) already exists
            if (r[k]) {
                //# ma(make array) out of the k(ey) then .push the v(alue) into the k(ey)'s array in the r(eturn value)
                r[k] = ma(r[k]);
                Array.prototype.push.call(r[k], v);
            }
            //# Else this is a new k(ey), so just add the k(ey)/v(alue) into the r(eturn value)
            else {
                r[k] = v;
            }
        }
        //# Else we've got ourselves a hash[]-style key-value e(ntry) 
        else {
            //# Collect the d(ecoded) k(ey) and the d(ecoded) sk(sub-key) based on the b(racket) locations
            k = d(e[1].slice(0, b));
            sk = d(e[1].slice(b + 1, e[1].indexOf("]", b)));

            //# ma(make array) out of the k(ey) 
            r[k] = ma(r[k]);

            //# If we have a sk(sub-key), plug the v(alue) into it
            if (sk) { r[k][sk] = v; }
            //# Else .push the v(alue) into the k(ey)'s array
            else { Array.prototype.push.call(r[k], v); }
        }
    }

    //# Return the r(eturn value)
    return r;
};

Esta é uma função que criei há algum tempo e estou muito feliz com isso. Não é sensível a maiúsculas e minúsculas - o que é útil. Além disso, se o QS solicitado não existir, ele retornará apenas uma string vazia.

Eu uso uma versão compactada disso. Estou postando descompactado para os tipos iniciantes para explicar melhor o que está acontecendo.

Tenho certeza de que isso poderia ser otimizado ou feito de maneira diferente para funcionar mais rápido, mas sempre funcionou muito bem para o que eu preciso.

Apreciar.

function getQSP(sName, sURL) {
    var theItmToRtn = "";
    var theSrchStrg = location.search;
    if (sURL) theSrchStrg = sURL;
    var sOrig = theSrchStrg;
    theSrchStrg = theSrchStrg.toUpperCase();
    sName = sName.toUpperCase();
    theSrchStrg = theSrchStrg.replace("?", "&") theSrchStrg = theSrchStrg + "&";
    var theSrchToken = "&" + sName + "=";
    if (theSrchStrg.indexOf(theSrchToken) != -1) {
        var theSrchTokenLth = theSrchToken.length;
        var theSrchTokenLocStart = theSrchStrg.indexOf(theSrchToken) + theSrchTokenLth;
        var theLocOfNextAndSign = theSrchStrg.indexOf("&", theSrchTokenLocStart);
        theItmToRtn = unescape(sOrig.substring(theSrchTokenLocStart, theLocOfNextAndSign));
    }
    return unescape(theItmToRtn);
}

Eu gosto deste (tirado de jquery-howto.blogspot.co.uk):

// get an array with all querystring values
// example: var valor = getUrlVars()["valor"];
function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

Funciona muito bem para mim.


function GET() {
        var data = [];
        for(x = 0; x < arguments.length; ++x)
            data.push(location.href.match(new RegExp("/\?".concat(arguments[x],"=","([^\n&]*)")))[1])
                return data;
    }


example:
data = GET("id","name","foo");
query string : ?id=3&name=jet&foo=b
returns:
    data[0] // 3
    data[1] // jet
    data[2] // b
or
    alert(GET("id")[0]) // return 3

function GetQueryStringParams(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');

    for (var i = 0; i < sURLVariables.length; i++)
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam)
        {
            return sParameterName[1];
        }
    }
}​

E é assim que você pode usar essa função, supondo que o URL seja

http://dummy.com/?stringtext=jquery&stringword=jquerybyexample

var tech = GetQueryStringParams('stringtext');
var blog = GetQueryStringParams('stringword');






query-string