¿Hay alguna forma de crear los parámetros de consulta para hacer una solicitud GET en JavaScript?
Al igual que en Python urllib.urlencode()
, tiene un diccionario (o una lista de dos tuplas) y crea una cadena como 'var1=value1&var2=value2'
.
javascript
url
urlencode
cnu
fuente
fuente
for
, use hasOwnProperty para garantizar la interoperabilidad.URLSearchParams tiene una mayor compatibilidad con el navegador.
Node.js ofrece el módulo de cadena de consulta .
fuente
searchParams.append(otherData)
funcional
fuente
var data = { bloop1: true, bloop2: "something" }; var url = "https://something.com/?"; var params = encodeData(data); var finalUrl = url + params; // Is this the right use?
Debe producirhttps://www.something.com/?bloop1=true&bloop2=something
?Zabba ha proporcionado en un comentario sobre la respuesta actualmente aceptada una sugerencia que para mí es la mejor solución: usar jQuery.param () .
Si uso
jQuery.param()
los datos en la pregunta original, entonces el código es simplemente:La variable
params
seráPara ver ejemplos, entradas y salidas más complicadas, consulte la documentación de jQuery.param () .
fuente
Acabamos de lanzar arg.js , un proyecto destinado a resolver este problema de una vez por todas. Tradicionalmente ha sido muy difícil, pero ahora puedes hacer:
Y la lectura funciona:
o obtener todo el lote:
y si le importa la diferencia entre
?query=true
y#hash=true
puede usar los métodosArg.query()
yArg.hash()
.fuente
Esto debería hacer el trabajo:
Ejemplo:
Resultado:
fuente
encodeURIComponent()
lugar deencodeURI
. Lee sobre la diferencia .ES2017 (ES8)
Haciendo uso de
Object.entries()
, que devuelve una matriz de[key, value]
pares de objetos . Por ejemplo, porque{a: 1, b: 2}
volvería[['a', 1], ['b', 2]]
. No es compatible (y no será) solo por IE.Código:
Ejemplo:
Resultado:
fuente
Si está utilizando Prototype, hay Form.serialize
Si está utilizando jQuery, hay Ajax / serialize
Sin embargo, no conozco ninguna función independiente para lograr esto, pero una búsqueda en Google para encontrar algunas opciones prometedoras si actualmente no está utilizando una biblioteca. Sin embargo, si no lo eres, realmente deberías porque son el cielo.
fuente
Solo me gustaría volver a esta pregunta de hace casi 10 años. En esta era de programación estándar, su mejor opción es configurar su proyecto utilizando un administrador de dependencias (
npm
). Existe toda una industria artesanal de bibliotecas que codifican cadenas de consulta y se ocupan de todos los casos extremos. Este es uno de los más populares:https://www.npmjs.com/package/query-string
fuente
Una pequeña modificación al mecanografiado:
fuente
Este hilo apunta a algún código para escapar de URL en php. Hay
escape()
yunescape()
cuál hará la mayor parte del trabajo, pero necesita agregar un par de cosas adicionales.fuente