marzo 06, 2007

POST correctemente codificados en AJAX

Tras revisar muchos manuales de AJAX me he encontrado con un problema muy común, el tema de escapar adecuadamente los parámetros:

Desde el simple:
'parametro='+parametro.value+'¶metro2='+parametro2.value

Cuyo primer problema salta en cuanto usamos los caracteres "?", "&", etc

Lo sigue el más avanzado "escape":
'parametro='+escape(parametro.value)+'¶metro2='+escape(parametro2.value)

Que se encarga de codificar como si de una URL se tratara el contenido de nuestra variable, aún seguimos teniendo problemas con caracteres como el "+" o "/" ya que tienen un significado especial, por ejemplo el primero será sustituido en el lado del servidor por un espacio por el lenguaje con que lo procesemos.

La solución mas adecuada que he encontrado por ahora se trata de realizar nuestra propia función de "escapado":
function escapa(cadena)
{
return escape(cadena).replace(/\+/g, '%2B').replace(/\//g, '%2F');
}

Que se encargará de sustituir los caracteres que la función de javascript escape no ha modificado.

comentarios: