18 votes

Échapper aux données jQuery envoyées via POST

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

Les informations du formulaire sont collectées par :

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

Ceci est utilisé pour construire la chaîne de caractères POST, c'est à dire

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

Évidemment, cela pose un problème si un caractère d'esperluette est utilisé. Quelle est la meilleure méthode pour échapper aux variables, notamment pour que l'utilisateur puisse utiliser une esperluette (&) en toute sécurité ?

Merci !

26voto

Alex Points 3747

Le mieux 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 la fonction serialize() de jQuery pour obtenir les données de votre formulaire sous la forme d'une chaîne de requête sérialisée :

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

La méthode .serialize() crée un texte en notation standard codée par URL standard. Elle opère sur un objet jQuery représentant un ensemble d'éléments de formulaire éléments de formulaire. Les éléments de formulaire peuvent être de plusieurs types.

Bien plus jolie à mon avis :-)

25voto

LiraNuna Points 21565

encodeURIComponent fera ce que vous recherchez.

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

Cela permettra de coder tous les caractères potentiellement non sécurisés.

2voto

Dmitris Points 1445

Vous pouvez utiliser la fonction d'échappement de JavaScript

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X