Estoy tratando de pasar parámetros a una URL que se parece a esto:
http://www.foobar.com/foo?imageurl=
Y quiero pasar los parámetros como una URL de imagen que es generada por otra API, y el enlace de la imagen resulta como:
http://www.image.com/?username=unknown&password=unknown
Sin embargo, cuando intento usar la URL:
http://www.foobar.com/foo?imageurl=http://www.image.com/?username=unknown&password=unknown
No funciona.
También intenté usar encodeURI()
y encodeURIComponent()
en imageURL, y eso tampoco funciona.
javascript
url
encodeuricomponent
Apoorv Saxena
fuente
fuente
Respuestas:
Con PHP
Resultado
Con Javascript:
DEMO: http://jsfiddle.net/Lpv53/
fuente
Usando el nuevo ES6
Object.entries()
, se convierte en un pequeño anidadomap
/ divertidojoin
:fuente
No deberías usar
encodeURIComponent()
oencodeURI()
. Debe utilizarfixedEncodeURIComponent()
yfixedEncodeURI()
, de acuerdo con la documentación de MDN.Respecto a
encodeURI()
...Respecto a
encodeURIComponent()
...¿Entonces cuál es la diferencia?
fixedEncodeURI()
yfixedEncodeURIComponent()
convertir el mismo conjunto de valores, perofixedEncodeURIComponent()
también convierte este conjunto:+@?=:*#;,$&
. Este conjunto se utiliza enGET
los parámetros (&
,+
, etc.), las etiquetas de anclaje (#
), etiquetas de comodines (*
), piezas de correo electrónico / nombre de usuario (@
), etc ..Por ejemplo: si lo usa
encodeURI()
,[email protected]/?email=me@home
no enviará correctamente el segundo@
al servidor, a excepción de que su navegador maneje la compatibilidad (como Chrome, naturalmente, lo hace a menudo).fuente
"except for your browser handling the compatibility"
?site.com?formula=a+b=c
trabaja en la producciónformula=>a+b=c
, eso viola las especificaciones, pero si funciona, es porque Chrome / etc. puede detectar el error de especificación de la URL, etc., y así sucesivamente, w /[email protected][email protected]
.