Pb avec addslash

Résolu
ephelya Messages postés 296 Statut Membre -  
ephelya Messages postés 296 Statut Membre -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  2. ephelya Messages postés 296 Statut Membre 2
     
    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
  3. Zero
     
    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
    1. ephelya Messages postés 296 Statut Membre 2
       
      Merci beaucoup, je vais utiliser ça au cas où ! :-)
      0