Estou procurando um plugin jQuery que possa obter parâmetros de URL e suporte esta sequência de pesquisa sem gerar o erro JavaScript: "sequência de URI malformada". Se não houver um plugin jQuery que suporte isso, eu preciso saber como modificá-lo para suportar isso.
?search=%E6%F8%E5
O valor do parâmetro URL, quando decodificado, deve ser:
æøå
(os caracteres são noruegueses).
Como não tenho acesso ao servidor, não posso modificar nada nele.
javascript
url
query-string
url-parameters
Sindre Sorhus
fonte
fonte
decodeURIComponent()
. Os caracteres noruegueses provavelmente foram codificados usando algo comoescape()
e alterar adecodeURIComponent()
chamada para umunescape()
deve ajudar.Respostas:
fonte
name = 'bar'
, acho que esse regexp corresponderia'foobar=10'
e retornaria'10'
. Talvez você possa adicionar'[?|&]'
no início de sua regexp. Felicidades!function getURLParameter(name) { var p = RegExp(name + '=' + '(.+?)(&|$)').exec(location.search); if(!!p) { p = decodeURI(p[1]); } return p; }
Abaixo está o que eu criei a partir dos comentários aqui, além de corrigir bugs não mencionados (como retornar nulo e não 'nulo'):
fonte
new
na frente do RegExp? Menos avisos de fiapos.O que você realmente deseja é o plugin jQuery URL Parser . Com este plug-in, obter o valor de um parâmetro de URL específico (para o URL atual) se parece com o seguinte:
Se você deseja um objeto com nomes de parâmetros como chaves e valores de parâmetros como valores, basta chamar
param()
sem um argumento, como este:Essa biblioteca também funciona com outros URLs, não apenas o atual:
Como essa é uma biblioteca de análise de URL inteira, você também pode obter outras informações a partir da URL, como a porta especificada ou o caminho, protocolo etc:
Também possui outros recursos, confira a página inicial para mais documentos e exemplos.
Em vez de escrever seu próprio analisador de URIs para esse fim específico, que meio que funciona na maioria dos casos, use um analisador de URIs real. Dependendo da resposta, o código de outras respostas pode retornar em
'null'
vez denull
, não funciona com parâmetros vazios (?foo=&bar=x
), não pode analisar e retornar todos os parâmetros de uma só vez, repete o trabalho se você consultar repetidamente parâmetros de URL, etc.Use um analisador de URI real, não invente o seu.
Para aqueles que são avessos ao jQuery, há uma versão do plugin que é JS puro .
fonte
Se você não sabe quais serão os parâmetros da URL e deseja obter um objeto com as chaves e os valores que estão nos parâmetros, você pode usar isto:
Chamar getParameters () com um URL como
/posts?date=9/10/11&author=nilbus
retornaria:Não incluirei o código aqui, pois ele fica ainda mais longe da questão, mas o weareon.net postou uma biblioteca que permite a manipulação dos parâmetros no URL também:
fonte
{"": undefined}
quando a URL não tem parâmetros. É melhor retornar um objeto vazio usandoif(searchString=='') return {};
diretamente após asearchString
atribuição.Você pode usar a propriedade location.search nativa do navegador :
Mas existem alguns plugins jQuery que podem ajudá-lo:
fonte
Com base na resposta do 999 :
Alterar:
decodeURI()
é substituído pordecodeURIComponent()
[?|&]
é adicionado no início do regexpfonte
?a=&b=1
. Melhor regexp seria:"[?&]"+name+"=([^&]*)"
É necessário adicionar o parâmetro i para torná-lo sem distinção entre maiúsculas e minúsculas:
fonte
Depois de ler todas as respostas, acabei com esta versão com + uma segunda função para usar parâmetros como sinalizadores
fonte
fonte
Por exemplo, uma função que retorna valor de qualquer variável de parâmetro.
E é assim que você pode usar essa função assumindo que o URL seja,
"http://example.com/?technology=jquery&blog=jquerybyexample".
Portanto, no código acima, a variável "tech" terá "jQuery" como valor e a variável "blog" será "jquerybyexample".
fonte
Você não deve usar o jQuery para algo assim!
A maneira moderna é usar pequenos módulos reutilizáveis através de um gerenciador de pacotes como o Bower.
Eu criei um pequeno módulo que pode analisar a string de consulta em um objeto. Use-o assim:
fonte
Há muitos códigos de bugs aqui e as soluções regex são muito lentas. Encontrei uma solução que funciona até 20x mais rápido que a contrex e é elegantemente simples:
O Regex não é a solução definitiva, pois esse tipo de problema, a manipulação simples de cadeias de caracteres pode funcionar muito mais eficientemente. Código fonte .
fonte
getURLParameter(id)
ougetURLParameter(Id)
Funciona da mesma forma :)fonte
Fragmento de código jQuery para obter as variáveis dinâmicas armazenadas no URL como parâmetros e armazená-las como variáveis JavaScript prontas para uso com seus scripts:
fonte
fonte
Eu criei uma função simples para obter o parâmetro URL no JavaScript a partir de um URL como este:
RESULTADO:
18
fonte
Apenas no caso de vocês terem o URL como localhost / index.xsp? A = 1 # alguma coisa e precisarem obter o parâmetro, não o hash.
fonte
Ligeira modificação na resposta por @pauloppenheim, pois ela não manipula corretamente os nomes de parâmetros que podem fazer parte de outros nomes de parâmetros.
Por exemplo: se você tiver parâmetros "appenv" e "env", a redefinição do valor para "env" poderá selecionar o valor "appenv".
Consertar:
fonte
Isso pode ajudar.
fonte
?twothrids=text