Eu tenho este URL:
site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc
o que eu preciso é ser capaz de alterar o valor do parâmetro da URL de 'linhas' para algo que eu especificar, digamos 10. E se as 'linhas' não existirem, eu preciso adicioná-lo ao final do URL e adicionar o valor que eu já especifiquei (10).
javascript
url
query-string
url-parameters
url-parsing
Sindre Sorhus
fonte
fonte
Respostas:
Estendi o código de Sujoy para criar uma função.
Chamadas de função:
Versão atualizada que também cuida das âncoras no URL.
fonte
http://www.domain.com/index.php?action=my_action&view-all=Yes
e preciso alterar o valor "ver tudo". Minha pergunta SO que foi encerrada: stackoverflow.com/questions/13025880/…Eu acho que você quer o plugin de consulta .
Por exemplo:
Isso funcionará independentemente do estado atual das linhas.
fonte
window.location.pathname
.Para responder à minha própria pergunta 4 anos depois, depois de ter aprendido muito. Especialmente que você não deve usar o jQuery para tudo. Eu criei um módulo simples que pode analisar / stringify uma string de consulta. Isso facilita a modificação da string de consulta.
Você pode usar a string de consulta da seguinte maneira:
fonte
Pequena solução rápida em js puro, sem necessidade de plugins:
Chame assim:
Ou, se você deseja permanecer na mesma página e substituir vários parâmetros:
editar, graças Lucas: Para remover o parâmetro inteiramente, passar
false
ounull
para o valor:replaceQueryParam('rows', false, params)
. Como0
também é falso , especifique'0'
.fonte
Ben Alman tem uma boa jquery querystring / url plug-in aqui que permite que você manipule a querystring facilmente.
Como pedido -
Vá para a página de teste aqui
No firebug, digite o seguinte no console
jQuery.param.querystring(window.location.href, 'a=3&newValue=100');
Ele retornará a seguinte string de URL alterada
Observe que o valor de uma querystring para a mudou de X para 3 e adicionou o novo valor.
Você pode usar a nova string de URL da maneira que desejar, por exemplo, usando document.location = newUrl ou alterar um link de âncora etc.
fonte
TypeError: jQuery.param.querystring is not a function
jQuery.param.querystring
. Eu acho que eles refatoraram a biblioteca.Uma abordagem moderna para isso é usar URLSearchParams baseado em padrão nativo . É suportado por todos os principais navegadores, exceto pelo IE, onde estão disponíveis polyfills
fonte
site.fwx%3Fposition=1&archiveid=5000&columns=5&rows=10&sorting=ModifiedTimeAsc
o que é confuso, porque não é o que você teria construído se você fez isso manualmente ...você pode fazer isso via JS normal também
fonte
Esta é a maneira moderna de alterar os parâmetros de URL:
fonte
Uma alternativa viável à manipulação de String seria configurar um html
form
e apenas modificar o valor dorows
elemento?Então, com
html
isso é algo comoCom o seguinte JavaScript para enviar o formulário
Provavelmente não é adequado para todas as situações, mas pode ser mais agradável do que analisar a string da URL.
fonte
Você pode usar esta minha biblioteca para fazer o trabalho: https://github.com/Mikhus/jsurl
fonte
Solução 2020 : define a variável ou remove-a se você passar
null
ouundefined
para o valor.fonte
URLSearchParams
não funciona nas versões mais recentes de todos os principais navegadores (2020)Eu escrevi uma pequena função auxiliar que funciona com qualquer seleção. Tudo o que você precisa fazer é adicionar a classe "redirectOnChange" a qualquer elemento de seleção, e isso fará com que a página seja recarregada com um parâmetro de querystring novo / alterado, igual ao ID e ao valor da seleção, por exemplo:
O exemplo acima adicionaria "? MyValue = 222" ou "? MyValue = 333" (ou usar "&" se existirem outros parâmetros) e recarregar a página.
jQuery:
fonte
Aqui, peguei a resposta de Adil Malik e corrigi os três problemas que identifiquei com ela.
fonte
Aqui está o que eu faço. Usando minha função editParams (), você pode adicionar, remover ou alterar qualquer parâmetro e, em seguida, usar a função replaceState () incorporada para atualizar a URL:
fonte
Minha solução:
Em seguida, basta chamar "setParams" e passar um objeto com os dados que você deseja definir.
Exemplo:
No meu caso, eu tive que atualizar uma entrada de seleção html quando ela muda e se o valor for "0", remova o parâmetro. Você pode editar a função e remover o parâmetro do URL se a chave do objeto também for "nula".
Espero que isso ajude todos
fonte
Outra variação na resposta de Sujoy. Apenas alterei os nomes das variáveis e adicionamos um wrapper de namespace:
O uso é agora:
fonte
Eu também escrevi uma biblioteca para obter e definir parâmetros de consulta de URL em JavaScript .
Aqui está um exemplo de seu uso.
Obtenha parâmetros de consulta como um objeto, por chave ou adicione / altere / remova.
fonte
Eu estava procurando a mesma coisa e encontrei: https://github.com/medialize/URI.js, o que é muito bom :)
- Atualização
Encontrei um pacote melhor: https://www.npmjs.org/package/qs, que também lida com matrizes nos parâmetros de obtenção.
fonte
Eu sei que esta é uma pergunta antiga. Eu aprimorei a função acima para adicionar ou atualizar parâmetros de consulta. Ainda é apenas uma solução JS pura.
fonte
minha função de suporte removendo param
fonte
Acabei de escrever um módulo simples para lidar com a leitura e atualização dos parâmetros de consulta de URL atuais.
Exemplo de uso:
Aqui está o meu código chamado UrlParams. (Js / ts):
fonte
fonte