Alguém conhece uma boa maneira de escrever uma extensão jQuery para lidar com parâmetros de string de consulta? Basicamente, quero estender a ($)
função mágica do jQuery para que eu possa fazer algo assim:
$('?search').val();
Que me daria o "teste" valor na seguinte URL: http://www.example.com/index.php?search=test
.
Eu já vi muitas funções que podem fazer isso no jQuery e Javascript, mas na verdade eu quero estender o jQuery para funcionar exatamente como é mostrado acima. Não estou procurando um plugin jQuery, estou procurando uma extensão para o método jQuery.
javascript
jquery
url
jquery-plugins
query-string
TroySteven
fonte
fonte
$
sobrecarregado o suficiente?Respostas:
Após anos de análise feia de strings, existe uma maneira melhor: URLSearchParams Vamos dar uma olhada em como podemos usar essa nova API para obter valores a partir do local!
UPDATE: IE não é suportado
use esta função a partir de uma resposta abaixo, em vez de URLSearchParams
fonte
Por que estender o jQuery? Qual seria o benefício de estender o jQuery contra apenas ter uma função global?
http://jsfiddle.net/gilly3/sgxcL/
Uma abordagem alternativa seria analisar toda a cadeia de consulta e armazenar os valores em um objeto para uso posterior. Essa abordagem não requer uma expressão regular e estende o
window.location
objeto (mas, poderia facilmente usar uma variável global):http://jsfiddle.net/gilly3/YnCeu/
Esta versão também utiliza
Array.forEach()
, que não está disponível nativamente no IE7 e IE8. Ele pode ser adicionado usando a implementação no MDN ou você pode usar o jQuery$.each()
.fonte
name=value
pares, separados por&
. Se o seu código estiver usando um formato de string de consulta personalizado, obviamente, você precisará escrever um analisador de string de consulta personalizado sempre que a string de consulta for consumida, seja no servidor ou no cliente.GET
envio de formulário padrão é codificado comoapplication/x-www-form-urlencoded
, com valores separados por&
. Meu código lida com esse padrão. As estruturas de URL personalizadas, como a que você vinculou, precisarão de um analisador personalizado do lado do servidor e do cliente. Independentemente disso, adicionar essa capacidade ao meu código acima seria trivial.JQuery O plugin jQuery-URL-Parser faz o mesmo trabalho, por exemplo, para recuperar o valor do parâmetro de string de consulta de pesquisa , você pode usarEsta biblioteca não é mantida ativamente. Como sugerido pelo autor do mesmo plugin, você pode usar URI.js .
Ou você pode usar o js-url . É bem parecido com o abaixo.
Para que você possa acessar o parâmetro de consulta como
$.url('?search')
fonte
file://
protocolo fará com que muito mais coisas não funcionem. Você pode criar um servidor HTML estático muito rápido e fácil com o node.js. stackoverflow.com/questions/16333790/…Encontrei esta jóia de nossos amigos no SitePoint. https://www.sitepoint.com/url-parameters-jquery/ .
Usando o jQuery PURE. Eu apenas usei isso e funcionou. Ajustou um pouco, por exemplo, saquê.
Use como quiser.
fonte
results[1] || 0
, você deve fazer se (resultados) {retornar resultados [1]} retornar 0; Os parâmetros de consulta do bcoz podem não estar presentes. E a modificação lidará com todos os casos genéricos.https://example.com/?c=Order+ID
? Esse sinal de adição ainda permanece nesta função.Este não é meu exemplo de código, mas eu o usei no passado.
fonte
Eu escrevi uma pequena função em que você só precisa analisar o nome do parâmetro de consulta. Portanto, se você possui:? Project = 12 & Mode = 200 & date = 27-05-2013 e deseja o parâmetro 'Mode', basta analisar o nome do 'Mode' na função:
fonte
Com base na resposta do @Rob Neild acima, aqui está uma adaptação JS pura que retorna um objeto simples de parâmetros de string de consulta decodificados (sem% 20, etc).
fonte
""
. E você obtém {"": "undefined"}Escrito em Javascript Vanilla
fonte
Eu uso isso.
fonte