2010-02-28 2 views
3

comment désinfecter les entrées utilisateur que vous rassemblez par jquery .val() afin de pouvoir l'écrire dans une dataString ... dans l'exemple ci-dessous lorsque l'utilisateur écritsérialiser la fonction pour les valeurs de chaîne à utiliser dans jQuery ajax datastring

si un texte qui contient & le reste du commentaire ne semble pas fonctionner bien car il compte le reste comme une autre variable POST à ​​..

est-il un sanitaziation ou serializat code d'ion? La fonction de sanitize() jQuery fonctionne sur les formes, mais je veux quelque chose que je peux utiliser utiliser directement sur les cordes ...

var id = $("some_id_value_holder_hidden_field").val(); 
var comment = $("#sometextarea").val(); 

var dataString = "id=" + id + "&comment=" + comment; 

$.ajax({ 

type: "POST", 
url: "write_comment.php", 
data: dataString, 
dataType: "json", 
success: function(res) { 
    // Success 
}, 
error: function(xhr, textStatus, errorThrown) { 
    // Error 
} 
}); 

Toute suggestion sera très appréciée Cordialement

Répondre

2

il y a un intégré en encodeUriComponent qui fait exactement ce que vous cherchez. En plus de cela, vous pouvez fournir un objet dans le champ "data", auquel cas l'encodage de l'URL sera géré par jquery. Dans votre exemple:

$.ajax({ 
    type: "POST", 
    url: "write_comment.php", 
    data: { id: id, comment: comment}, 
    etc... 
+0

+1 encoderUriComponent est ce que vous voulez, pas échapper. – Plynx

3

Puisque vous utilisez jquery, vous pouvez utiliser le plugin Formulaire inclus pour sérialiser le tableau.

serialize() - Crée une chaîne d'URL à partir des champs de formulaire (par exemple, someEle = someVal & anotherEle = anotherVal)

serializeArray() - Retourne un tableau clé/valeur de tous les éléments de forme (utile de savoir)

$.ajax({ 
    url : 'write_comment.php', 
    type : 'post', 
    data : $('#form-element').serialize(), 
    success : function(data) 
    { 
     alert('yay!'); 
    } 
}); 

Modifier: Edité pour supprimer une partie d'échappement incorrecte().

+0

Je ne pouvais pas le faire fonctionner avec des zones de texte et des champs de saisie. Je pense que la fonction de sérialisation ne peut être appliquée qu'à la balise de forme ... Je n'ai qu'une zone de texte sans étiquette de forme, donc j'ai besoin d'une fonction pour sérialiser la chaîne et non la forme entière –

Questions connexes