Eu tenho um URL como este:
http://localhost/PMApp/temp.htm?ProjectID=462
O que preciso fazer é obter os detalhes após o ?
sinal (string de consulta) - isto é ProjectID=462
. Como posso fazer isso usando JavaScript?
O que fiz até agora é o seguinte:
var url = window.location.toString();
url.match(?);
Eu não sei o que fazer a seguir.
javascript
query-string
AbdulAziz
fonte
fonte
location.search
Respostas:
Dê uma olhada no artigo MDN sobre
window.location
.O QueryString está disponível em
window.location.search
.Solução que funciona em navegadores legados também
O MDN fornece um exemplo (não mais disponível no artigo mencionado acima) de como obter o valor de uma única chave disponível no QueryString. Algo assim:
Em navegadores modernos
Em navegadores modernos, você tem a
searchParams
propriedade da interface URL, que retorna um objeto URLSearchParams . O objeto retornado possui vários métodos convenientes, incluindo um get-method. Portanto, o equivalente ao exemplo acima seria:A interface URLSearchParams também pode ser usada para analisar strings em um formato de querystring e transformá-los em um objeto URLSearchParams útil.
Observe que o suporte do navegador ainda é limitado nesta interface, portanto, se você precisar oferecer suporte a navegadores legados, continue com o primeiro exemplo ou use um polyfill .
fonte
encodeURIComponent/decodeURIComponent
vez deescape/unescape
getQueryStringValue
para navegadores legados não funciona para?foo=bar&foo1=bar1
Se tentarmos buscar o valor parafoo
, ele retornaempty string
.Use
window.location.search
para obter tudo após?
incluir?
Exemplo:
fonte
let querystring = window.location.search.substring(1);
fonte
Isso adicionará uma função global para acessar as variáveis queryString como um mapa.
Aproveitar.
fonte
Se você passou a usar Typescript e ter dom em sua o lib de
tsconfig.json
, você pode fazer:fonte
Você pode usar esta função, para dividir string de? Id =
aqui está o violino
fonte
Você pode usar isso para encontrar o valor direto por meio do nome dos parâmetros.
fonte
fonte
Você pode usar a
search
propriedade dowindow.location
objeto para obter a parte da consulta do URL. Observe que inclui o ponto de interrogação (?) No início, apenas no caso de afetar a forma como você pretende analisá-lo.fonte
Você deve dar uma olhada na API de URL que possui métodos auxiliares para conseguir isso como
URLSearchParams
: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParamsNo momento, isso não é compatível com todos os navegadores modernos, então não se esqueça de polyfill (Polyfill disponível em https://qa.polyfill.io/ ).
fonte
agora você tem a parte da consulta em queryString
A primeira substituição removerá todos os espaços em branco, a segunda substituirá toda a parte '&' por "," e finalmente a terceira substituição colocará ":" no lugar dos sinais '='.
Digamos que você tenha uma consulta como abc = 123 & efg = 456 . Agora, antes de analisar, sua consulta está sendo convertida em algo como {"abc": "123", "efg": "456"}. Agora, quando você for analisar isso, ele lhe dará sua consulta no objeto json.
fonte
Converta isso em array e divida com '?'
fonte
fonte
Tente este
Digamos que seu URL seja http: //example.com&this=chicken&that=sandwich . Você deseja obter o valor disso, daquilo e de outro.
Se quiser usar um URL diferente do que está na janela, você pode passar um como segundo argumento.
Referência
fonte
Acho que é muito mais seguro confiar no navegador do que em qualquer regex engenhoso:
fonte