2010-02-09 28 views
18

Estoy usando jQuery.ajax para extraer datos de formularios de una página y enviarlos a mi base de datos (a través de otra página de PHP).Escapar datos de jQuery enviados a través de POST

La información forma se recoge por:

var X=$('#div1').val(); 
var Y=$('#div2').val(); 

Esto se utiliza para crear la cadena POST, es decir,

var data='varx='+X+'&vary='+Y; 

Obviamente, esto es problemático si se utiliza un carácter de signo. ¿Cuál es el mejor método para escapar de las variables, particularmente para que el usuario pueda usar de manera segura un ampersand (&)?

Gracias!

Respuesta

24

Lo mejor sería usar un objeto para los datos.

jQuery.post("yourScript.php", { 
    varx: X, 
    vary: Y 
}); 

o

jQuery.ajax({ 
     url: "yourScript.php",   
     type: "POST", 
     data: ({varx: X, vary: Y}), 
     dataType: "text", 
     success: function(msg){ 
     alert(msg); 
     } 
    } 
); 

También puede utilizar serialización de jQuery() para obtener los datos del formulario como una cadena de consulta en serie:

var data = jQuery(formSelector).serialize(); 

El .serialize() crea una texto cadena en notación estándar con codificación URL. Opera en un objeto jQuery que representa un conjunto de elementos de forma . Los elementos de formulario pueden ser de de varios tipos.

manera más bonita en mi opinión :-)

+0

¡Gracias por su respuesta! – Matt

24

encodeURIComponent hará lo que está buscando.

var X = encodeURIComponent($('#div1').val()); 
var Y = encodeURIComponent($('#div2').val()); 

Esto codificará todos los caracteres potencialmente inseguros.

+0

Gracias por su respuesta! – Matt

2

Puede utilizar la función JavaScript escape de

var data='varx='+escape(X)+'&vary='+escape(Y); 
+1

La función escape() ha quedado obsoleta en JavaScript versión 1.5. Utilice encodeURI() o encodeURIComponent() en su lugar. – CoR

Cuestiones relacionadas