2010-02-09 6 views
18

J'utilise jQuery.ajax pour extraire des données de formulaire d'une page et les envoyer à ma base de données (via une autre page PHP).Echappement de données jQuery envoyées via POST

Les informations de formulaire sont recueillis par:

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

Il est utilisé pour construire la chaîne POST, à savoir

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

Il est évident que cela pose un problème si un esperluette est utilisé. Quelle est la meilleure méthode pour échapper les variables, en particulier de sorte que l'utilisateur peut utiliser en toute sécurité une esperluette (&)?

Merci!

Répondre

24

Le meilleur serait d'utiliser un objet pour les données.

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

ou

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

Vous pouvez également utiliser serialize jQuery() pour obtenir vos données de formulaire comme querystring sérialisé:

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

La méthode .serialize() crée un text chaîne en notation standard codée en URL. Il fonctionne sur un objet jQuery représentant un ensemble d'éléments de formulaire . Les éléments de formulaire peuvent être de plusieurs types.

Way plus jolie à mon avis :-)

+0

Merci pour votre réponse! – Matt

24

encodeURIComponent fera ce que vous recherchez.

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

Ceci encodera tous les caractères potentiellement non sécurisés.

+0

Merci pour votre réponse! – Matt

2

Vous pouvez utiliser la fonction d'échappement de JavaScript

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

La fonction escape() a été dépréciée dans JavaScript version 1.5. Utilisez encodeURI() ou encodeURIComponent() à la place. – CoR

Questions connexes