Pb avec addslash

Résolu/Fermé
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 11 nov. 2018 à 14:01
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 12 nov. 2018 à 18:37
Bonjour,

Je récupère avec ajax des infos que je dois afficher ds un champ iput. Mon pb c'est que lorsqu'il y a une apostrophe, ça me coupe la chaîne. Mais lorsque je fais valeur = valeur.replace(/'/g, "\\'"); ça m'affiche la valeur avec le backslash... Comment je peux contourner le problème ?
Merci d'avance pour votre aide !



3 réponses

jordane45 Messages postés 38320 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2024 4 707
11 nov. 2018 à 20:25
Bonjour,
Tu peux utiliser des doubles quotes (guillemets) pour entourer le contenu de tes variables.. tu auras moins de soucis.
alert("même avec l'apostrophe...ça marche !");

Si tes données viennent de PHP, tu peux également utiliser du htmlspecialchar et/ou du htmlentities

Mais bon.. sans voir ton code..impossible de t'en dire plus.

0
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
12 nov. 2018 à 11:36
En fait je récupère les données en ajax et sont parfaites à l'arrivée (ds le console.log), c'est uniquement qd je cherche à m'en servir pr mettre à jour un input que ça pose pb. Pour le moment, je ne sais pas par quel miracle mais l'erreur ne se produit plus alors que je n'ai touché à rien...
Bonne nouvelle mais je déteste ne pas comprendre, pcq je ne peux pas être sûre que ça ne se reproduise pas Mais merci quand même ! :-)
0
Au cas où :

Dans l'hypothèse que tu encodes en JSON tes données...

$.ajax({
 url: 'url.php', 
 type: 'POST',
 data: data,
 success: function(data){
  var parsedjson = JSON.parse(data);
  console.log(escapeHtml(addslashes(parsedjson.response)));
 }
});

function addslashes(string) {
  return string.replace(/\\/g, '\\\\').
  replace(/\u0008/g, '\\b').
  replace(/\t/g, '\\t').
  replace(/\n/g, '\\n').
  replace(/\f/g, '\\f').
  replace(/\r/g, '\\r').
  replace(/'/g, '\\\'').
  replace(/"/g, '\\"');
}

function escapeHtml(text) {
  var map = {
    '&': '&',
    '<': '<',
    '>': '>',
    '"': '"',
    "'": '''
  };
  return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}
0
ephelya Messages postés 282 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
12 nov. 2018 à 18:37
Merci beaucoup, je vais utiliser ça au cas où ! :-)
0