J'ai besoin d'échapper aux guillemets simples dans les paramètres de la fonction JavaScript pour éviter ceci:
onclick="Javascript:INSERT_PRODUCT('188267','WILL AND GRACE','32311','L'ANNIVERSARIO DINOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
Mais je dois les échapper dans un appel de fonction car je ne connais pas les valeurs qui seront transmises (variables de base de données que je ne peux pas échapper de la base de données).
Existe-t-il une fonction qui me permet de faire quelque chose comme ce qui suit?
onclick="Javascript:function(escape(param1), escape(param2), escape(param3));"
JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """)
produira une chaîne que vous pouvez intégrer en toute sécurité dans un attribut cité et qui aura la même signification si elle est vue par l'interpréteur JavaScript.
Le seul inconvénient est que certains Unicode newlines (U + 2028 et U + 2029) doivent être ignorés avant d'être incorporés dans des littéraux JavaScript, mais JSON exige uniquement que \r
et \n
soient échappés.
Échappez à l'apostrophe avec une barre oblique inverse:
onclick="INSERT_PRODUCT('188267','WILL AND GRACE ','32311','L\'ANNIVERSARIO DI NOZZE ','20101113|04|18|','13/11/2010 0.00.00','CANALE 5 ',this);"
La question ne l’est peut-être pas tout à fait clair, mais en supposant que tout ce que vous voulez, c’est d’envoyer cela à un script PHP pour le stocker dans une base de données, vous utiliseriez bien sûr les différentes méthodes de PHP, telles que stripslashes()
- mais si N'essayez vraiment pas de faire trop de fantaisie, il suffit d'ajouter une barre oblique devant un guillemet simple pour envoyer une requête SQL directement dans PHP à partir du côté client. C'est pas sûr , mais peut-être pas nécessaire non plus.
str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x
fait le tour., comme par exemple dans quelque chose comme ceci:
var body = $('#body').val().replace(/'/g, "\\'");
myCustomSQLqueryFunction("UPDATE mytable SET `content`='"+ body +"';" );
MySQL va maintenant stocker votre body
comme vous le voyez dans le champ du formulaire.
Cette fonction a fonctionné pour moi (elle supprime et restaure à nouveau la citation): En supposant que les données à envoyer soient la valeur d'un élément d'entrée,
var Url = encodeURIComponent($('#userInput').val().replace("'","\\'"));
Puis récupérez le texte original à nouveau:
var originalText = decodeURIComponent(Url);
var cmpdetail = cmpdetail.replace(/'/g, "\\'");
ça marche pour moi.
Je préfère utiliser guillemets simples pour définir les chaînes JavaScript. J'échappe ensuite à mes guillemets incorporés comme suit.
Voici comment je le fais, essentiellement str.replace(/[\""]/g, '\\"')
.
var display = document.getElementById('output');
var str = 'class="whatever-foo__input" id="node-key"';
display.innerHTML = str.replace(/[\""]/g, '\\"');
//will return class=\"whatever-foo__input\" id=\"node-key\"
<span id="output"></span>