¿Alguien sabe de una buena manera de escribir una extensión jQuery para manejar parámetros de cadena de consulta? Básicamente quiero extender la ($)
función mágica jQuery para poder hacer algo como esto:
$('?search').val();
Lo que me daría la "prueba" valor en la siguiente URL: http://www.example.com/index.php?search=test
.
He visto muchas funciones que pueden hacer esto en jQuery y Javascript, pero en realidad quiero extender jQuery para que funcione exactamente como se muestra arriba. No estoy buscando un complemento jQuery, estoy buscando una extensión para el método jQuery.
javascript
jquery
url
jquery-plugins
query-string
TroySteven
fuente
fuente
$
sobrecargado lo suficiente?Respuestas:
Después de años de análisis de cadenas feo, hay una mejor manera: URLSearchParams ¡Echemos un vistazo a cómo podemos usar esta nueva API para obtener valores de la ubicación!
ACTUALIZACIÓN: IE no es compatible
use esta función de una respuesta a continuación en lugar de URLSearchParams
fuente
¿Por qué extender jQuery? ¿Cuál sería el beneficio de extender jQuery en lugar de tener una función global?
http://jsfiddle.net/gilly3/sgxcL/
Un enfoque alternativo sería analizar toda la cadena de consulta y almacenar los valores en un objeto para su uso posterior. Este enfoque no requiere una expresión regular y extiende el
window.location
objeto (pero podría usar fácilmente una variable global):http://jsfiddle.net/gilly3/YnCeu/
Esta versión también hace uso de
Array.forEach()
, que no está disponible de forma nativa en IE7 e IE8. Puede agregarse usando la implementación en MDN , o puede usar jQuery's$.each()
en su lugar.fuente
name=value
pares, separados por&
. Si su código usa un formato de cadena de consulta personalizado, obviamente, necesitará escribir un analizador de cadena de consulta personalizado donde sea que se consuma la cadena de consulta, ya sea en el servidor o en el cliente.GET
envío de formulario estándar se codifica comoapplication/x-www-form-urlencoded
, con valores separados por&
. Mi código maneja ese estándar. Las estructuras de URL personalizadas, como la que vinculó, necesitarán un analizador personalizado del lado del servidor y del lado del cliente. De todos modos, agregar esa capacidad a mi código anterior sería trivial.El complemento jQuery-URL-Parser de JQuery hace el mismo trabajo, por ejemplo, para recuperar el valor del parámetro de cadena de consulta de búsqueda , puede usarEsta biblioteca no se mantiene activamente. Según lo sugerido por el autor de la misma plugin, puede utilizar URI.js .
O puede usar js-url en su lugar. Es bastante similar al de abajo.
Para que pueda acceder al parámetro de consulta como
$.url('?search')
fuente
file://
protocolo hará que muchas más cosas no funcionen. Puede crear un servidor HTML estático muy rápido y fácil con node.js. stackoverflow.com/questions/16333790/…Encontré esta joya de nuestros amigos en SitePoint. https://www.sitepoint.com/url-parameters-jquery/ .
Usando PURE jQuery. Acabo de usar esto y funcionó. Lo ajusté un poco, por ejemplo, el sake.
Úselo como quiera.
fuente
results[1] || 0
hacerlo, debe hacerlo si (resultados) {return results [1]} return 0; Los parámetros de consulta de bcoz pueden no estar presentes en absoluto. Y la modificación manejará todos los casos genéricos.https://example.com/?c=Order+ID
? Ese signo más aún permanece en esta función.Este no es mi ejemplo de código, pero lo he usado en el pasado.
fuente
Escribí una pequeña función donde solo tienes que analizar el nombre del parámetro de consulta. Entonces, si tiene:? Project = 12 & Mode = 200 & date = 2013-05-27 y desea el parámetro 'Mode', solo tiene que analizar el nombre 'Mode' en la función:
fuente
Sobre la base de la respuesta de @Rob Neild anterior, aquí hay una adaptación JS pura que devuelve un objeto simple de parámetros de cadena de consulta decodificados (sin% 20's, etc.).
fuente
""
. Y obtienes {"": "undefined"}Escrito en Javascript Vanilla
fuente
Yo uso esto.
fuente