2010-10-09 4 views
1

Existe-t-il un meilleur moyen de remplacer une chaîne par & dans la zone de texte casse le script car il pense son autre & paramètre?remplacer une valeur d'entrée

function doRequest(){ 
var str = $('textarea#tr').val(); 
$.ajax({ 
    type: "POST", 
    url: "index.php?sd=t", 
    data: "txt="+str.replace(/&/g, "and"), 
    success: function(){ 
     $("div").css('color','red'); 
     $("div").text('Saved'); 
     $("div").fadeTo(800,1); 
     $("div").animate({backgroundColor:'#000000'}, 200); 
     $("div").animate({backgroundColor:'#FFFF90'}, 400); 
     stre = false; 
    } 
}); 
} 

Répondre

4

Vous pouvez transmettre vos données comme un objet et laissez jQuery sérialiser, comme ceci:

data: {txt: str}, 

Notez ce ne sera pas mis le mot « et », il échappera il, laissant %26.

What actually happens under the covers appelle encodeURIComponent(), comme ceci:

data: "txt="+encodeURIComponent(str), 

je partirais avec la première méthode, je suis juste montrer ce qui se passe en dessous pour mieux comprendre le fonctionnement du codage.

+0

la raison d'avoir txt est que de php j'utilise $ _GET ['txt'], si je le supprime pour permettre à jquery de sérialiser quelle sera la demande get? – Slug

+0

@Slug - Il sera toujours appelé 'txt', quel que soit le nom de la propriété dans l'objet, c'est ce que le paramètre est appelé dans la requête GET, par exemple. cela va encore sérialiser à "txt = quelque chose", vous pouvez tester/voir avec 'alert ($ .par ({txt: str}))', c'est ce qui est appelé sous les couvertures :) –

+0

oh oui désolé j'ai regardé plus ça, merci beaucoup! – Slug

1
data: { txt: $('textarea#tr').val() } 
Questions connexes