Pb avec addslash

Résolu
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

  1. Modérateur
    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.

    1. 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 ! :-)
      1. 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]; });
        }
        
        1. Merci beaucoup, je vais utiliser ça au cas où ! :-)