Tengo esta URL:
site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc
lo que necesito es poder cambiar el valor de parámetro de url de 'filas' a algo que especifique, digamos 10. Y si las 'filas' no existen, necesito agregarlo al final de la url y agregar el valor que ya he especificado (10).
javascript
url
query-string
url-parameters
url-parsing
Sindre Sorhus
fuente
fuente
Respuestas:
He extendido el código de Sujoy para crear una función.
Llamadas de funciones:
Versión actualizada que también se encarga de los anclajes en la URL.
fuente
http://www.domain.com/index.php?action=my_action&view-all=Yes
y necesito cambiar el valor de "ver todo". Mi pregunta SO que se cerró: stackoverflow.com/questions/13025880/…Creo que quieres el complemento de consulta .
P.ej:
Esto funcionará independientemente del estado actual de las filas.
fuente
window.location.pathname
.Para responder mi propia pregunta 4 años después, después de haber aprendido mucho. Especialmente que no deberías usar jQuery para todo. He creado un módulo simple que puede analizar / stringificar una cadena de consulta. Esto facilita la modificación de la cadena de consulta.
Puede usar query-string de la siguiente manera:
fuente
Pequeña solución rápida en js puro, no se necesitan complementos:
Llámalo así:
O, si desea permanecer en la misma página y reemplazar varios parámetros:
edición, gracias Lucas: Para eliminar el parámetro del todo, pasar
false
onull
para el valor:replaceQueryParam('rows', false, params)
. Como0
también es falso , especifique'0'
.fuente
Ben Alman tiene un buen plugin jquery querystring / url aquí que le permite manipular la cadena de consulta fácilmente.
Según lo solicitado
Ir a su página de prueba aquí
En firebug ingrese lo siguiente en la consola
jQuery.param.querystring(window.location.href, 'a=3&newValue=100');
Le devolverá la siguiente cadena de URL modificada
Observe que el valor de una cadena de consulta para a ha cambiado de X a 3 y ha agregado el nuevo valor.
Luego puede usar la nueva cadena de url como lo desee, por ejemplo, usando document.location = newUrl o cambiar un enlace de anclaje, etc.
fuente
TypeError: jQuery.param.querystring is not a function
jQuery.param.querystring
. Supongo que han refactorizado la biblioteca.Un enfoque moderno para esto es utilizar URLSearchParams basados en estándares nativos . Es compatible con todos los principales navegadores, excepto IE, donde están disponibles polyfills
fuente
site.fwx%3Fposition=1&archiveid=5000&columns=5&rows=10&sorting=ModifiedTimeAsc
confuso porque no es lo que habría construido si lo hubiera hecho manualmente ...puedes hacerlo a través de JS normal también
fuente
Esta es la forma moderna de cambiar los parámetros de URL:
fuente
¿Sería una alternativa viable a la manipulación de cadenas establecer un html?
form
y simplemente modificar el valor delrows
elemento?Entonces, con
html
eso es algo comoCon el siguiente JavaScript para enviar el formulario
Probablemente no sea adecuado para todas las situaciones, pero podría ser mejor que analizar la cadena de URL.
fuente
Puede usar esta mi biblioteca para hacer el trabajo: https://github.com/Mikhus/jsurl
fuente
Solución 2020 : establece la variable o la elimina si pasa
null
oundefined
al valor.fuente
URLSearchParams
no funciona en las últimas versiones de todos los principales navegadores (2020)Escribí una pequeña función auxiliar que funciona con cualquier selección. Todo lo que necesita hacer es agregar la clase "redirectOnChange" a cualquier elemento de selección, y esto hará que la página se vuelva a cargar con un parámetro de cadena de consulta nuevo / modificado, igual a la identificación y el valor de la selección, por ejemplo:
El ejemplo anterior agregaría "? MyValue = 222" o "? MyValue = 333" (o usando "&" si existen otros parámetros), y vuelva a cargar la página.
jQuery:
fuente
Aquí tomé la respuesta de Adil Malik y solucioné los 3 problemas que identifiqué.
fuente
Esto es lo que hago. Usando mi función editParams (), puede agregar, eliminar o cambiar cualquier parámetro, luego usar la función incorporada replaceState () para actualizar la URL:
fuente
Mi solución:
Luego simplemente llame a "setParams" y pase un objeto con los datos que desea configurar.
Ejemplo:
En mi caso, tuve que actualizar una entrada de selección html cuando cambia y si el valor es "0", elimine el parámetro. Puede editar la función y eliminar el parámetro de la url si la clave del objeto también es "nula".
Espero que esto ayude a todos
fuente
Otra variación de la respuesta de Sujoy. Solo cambié los nombres de las variables y agregué un contenedor de espacio de nombres:
El uso es ahora:
fuente
Yo también he escrito una biblioteca para obtener y configurar parámetros de consulta de URL en JavaScript .
Aquí hay un ejemplo de su uso.
Obtenga parámetros de consulta como un objeto, por clave, o agregue / cambie / elimine.
fuente
Estaba buscando lo mismo y encontré: https://github.com/medialize/URI.js, que es bastante agradable :)
- Actualización
Encontré un paquete mejor: https://www.npmjs.org/package/qs también trata con matrices en get params.
fuente
Sé que esta es una vieja pregunta. He mejorado la función anterior para agregar o actualizar parámetros de consulta. Todavía es una solución pura de JS solamente.
fuente
mi función admite la eliminación de param
fuente
Acabo de escribir un módulo simple para tratar de leer y actualizar los parámetros de consulta de URL actuales.
Ejemplo de uso:
Aquí está mi código llamado UrlParams. (Js / ts):
fuente
fuente