Mejor manera:
encodeURIComponent escapa a todos los caracteres excepto los siguientes:alphabetic, decimal digits, - _ . ! ~ * ' ( )
Para evitar solicitudes inesperadas al servidor, debe llamar a encodeURIComponent en cualquier parámetro ingresado por el usuario que se pasará como parte de un URI. Por ejemplo, un usuario podría escribir "Tomillo y tiempo = nuevamente" para un comentario variable. No usar encodeURIComponent en esta variable dará comentario = Thyme% 20 & time = nuevamente. Tenga en cuenta que el signo y el signo igual marcan un nuevo par de clave y valor. Entonces, en lugar de tener una clave de comentario POST igual a "Tomillo y tiempo = otra vez", tiene dos claves POST, una igual a "Tomillo" y otra (tiempo) igual a otra vez.
Para la aplicación / x-www-form-urlencoded (POST), según http://www.w3.org/TR/html401/interac...m-content-type , los espacios deben reemplazarse por '+', por lo que uno puede desear seguir un reemplazo encodeURIComponent con un reemplazo adicional de "% 20" con "+".
Si se desea 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 de manera segura:
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}
Desbordamiento de pila
fuente
$.param
.