¿Cuál es la mejor utilidad de decodificación de URL de JavaScript? Codificar también sería bueno y trabajar bien con jQuery es una ventaja adicional.
¿Cuál es la mejor utilidad de decodificación de URL de JavaScript? Codificar también sería bueno y trabajar bien con jQuery es una ventaja adicional.
Respuestas:
También he usado encodeURIComponent () y decodeURIComponent () .
Aquí hay una función completa (tomada de PHPJS ):
function urldecode(str) {
return decodeURIComponent((str+'').replace(/\+/g, '%20'));
}
Utilizar este
unescape(str);
No soy un gran programador de JS, lo intenté todo, ¡y funcionó de maravilla!
decodeURIComponent(mystring);
Puede obtener parámetros pasados utilizando este bit de código:
//parse URL to get values: var i = getUrlVars()["i"];
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
O esta línea para obtener los parámetros:
location.search.split("your_parameter=")[1]
window.location.search
en su lugar.
//How decodeURIComponent Works
function proURIDecoder(val)
{
val=val.replace(/\+/g, '%20');
var str=val.split("%");
var cval=str[0];
for (var i=1;i<str.length;i++)
{
cval+=String.fromCharCode(parseInt(str[i].substring(0,2),16))+str[i].substring(2);
}
return cval;
}
document.write(proURIDecoder(window.location.href));
Si usted es responsable de codificar los datos en PHP utilizando urlencode, el rawurlencode de PHP funciona con decodeURIComponent de JavaScript sin necesidad de reemplazar el carácter +.
Esto es lo que usé:
En JavaScript:
var url = "http://www.mynewsfeed.com/articles/index.php?id=17";
var encoded_url = encodeURIComponent(url);
var decoded_url = decodeURIComponent(encoded_url);
En PHP:
$url = "http://www.mynewsfeed.com/articles/index.php?id=17";
$encoded_url = url_encode(url);
$decoded_url = url_decode($encoded_url);
También puede probarlo en línea aquí: http://www.mynewsfeed.x10.mx/articles/index.php?id=17
var uri = "my test.asp?name=ståle&car=saab";
console.log(encodeURI(uri));
decodeURIComponent()
está bien, pero nunca quieres usarlo encodeURIComponent()
directamente. Esto no puede escapar caracteres reservados como *
, !
, '
, (
, y )
. Consulte RFC3986 , donde se define, para obtener más información al respecto. La documentación de Mozilla Developer Network brinda una buena explicación y una solución. Explicación...
Para ser más estricto al adherirse a RFC 3986 (que se reserva!, ', (,) Y *), a pesar de que estos caracteres no tienen usos formales de delimitación de URI, se puede usar con seguridad lo siguiente:
Solución...
function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
En caso de que no esté seguro, consulte una buena demostración que funcione en JSBin.com . Compare esto con una demostración que funciona mal en JSBin.com usando encodeURIComponent()
directamente .
Buenos resultados del código:
thing%2athing%20thing%21
Resultados de código incorrecto de encodeURIComponent()
:
thing*thing%20thing!
encodeURIComponent
ydecodeURIComponent
?