Citation unique échouée dans les paramètres de la fonction JavaScript

Je dois échapper à des guillemets simples dans les paramètres de la fonction JavaScript pour éviter cela:

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 j'ai besoin de les échapper dans un appel de fonction car je ne connais pas les valeurs qui seront passées (variables db que je ne peux échapper à la base de données).

Y at-il une fonction qui me permet de faire quelque chose comme le suivant?

 onclick="Javascript:function(escape(param1), escape(param2), escape(param3));" 

7 Solutions collect form web for “Citation unique échouée dans les paramètres de la fonction JavaScript”

  JSON.stringify(plainTextStr).replace(/&/, "&").replace(/"/g, """) 

Produira une chaîne que vous pouvez intégrer avec sécurité dans un attribut cité et qui aura la même signification lorsqu'elle sera visualisée par l'interpréteur JavaScript.

La seule lacune est que certaines nouveautés Unicode (U + 2028 et U + 2029) doivent être échappées avant d'être incorporées dans des littératures de chaîne JavaScript, mais JSON exige que \r et \n soient échappés.

Évasion de 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);" 

Il n'est peut-être pas tout à fait clair de la question, mais en supposant que tout ce que vous voulez, c'est de l'envoyer à un script PHP pour stocker dans une base de données, vous utiliserez idéalement les différentes méthodes de PHP telles que stripslashes() – mais si vous êtes Vraiment pas essayer d'être trop chic, il suffit d'ajouter 1 barre oblique devant n'importe quel devis unique pour envoyer une requête SQL directement dans PHP à partir du client. Ce n'est pas sûr , mais peut-être pas nécessaire non plus.

 str.replace(/'/g, "\\'"); // escaping \ with \, so used 2x 

Fait l'affaire., Comme par exemple dans quelque chose comme ça:

 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 de formulaire.

Cette fonction a fonctionné pour moi (elle supprime et rétablit la citation): admettant que les données à envoyer sont la valeur d'un élément de saisie,

 var Url = encodeURIComponent($('#userInput').val().replace("'","\\'")); 

Ensuite, récupérez le texte original:

 var originalText = decodeURIComponent(Url); 
 var cmpdetail = cmpdetail.replace(/'/g, "\\'"); 

Ça fonctionne pour moi.

Si je vous comprends bien, je ne crois pas que ce que vous essayez de faire est possible. Vous devrez échapper aux guillemets côté serveur. Toute fonction qui échapperait aux guillemets pour vous serait une fonction nécessitant une chaîne valide, ce qui signifie qu'il faudrait échapper avant de passer à la fonction.

Je préfère utiliser un devis unique pour définir des chaînes JavaScript. Ensuite, j'échappe à mes quotes doubles intégrées comme suit.

C'est ainsi que 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> 
JavaScript rend le site Web intelligent, beauté et facile à utiliser.