http.post avec \n

Par Maitre2B, il y a 9 ans


Bonjour,

Je rencontre un problème avec une API.
J'utilise AngularJS, et j'utilise $http pour envoyer une string.
Il s'agit d'une description que l'utilisateur remplie.

Le problème survient lorsque la description contient un \n .
L'envoie du message à l'API fonctionne parfaitement, mais lorsque je dois afficher ce message contenant le \n, cette erreur apparaît:
SyntaxError: Unexpected token
in JSON at position 225

Comment régler ce soucis ?
Je suppose que je dois remplacer les \n juste avant d'envoyer le message mais je ne sais pas comment m'y prendre :/

5 réponses

Maitre2B, il y a 9 ans

Personne ? :s

Maitre2B, il y a 9 ans

Sachant que :
vm.requestDescription = "une phrase avec un
retour à la ligne."

J'ai fait ça

var formatedString = vm.requestDescription.replace(/\n/g,"<br/>");

et ça donne:
vm.requestDescription = "une phrase avec un <br/>retour à la ligne.

Comment faire pour que le <br/> soit interprété ?

Pominus, il y a 9 ans

ça dépends ou tu veut l'interpréter si c'est dans une chaine de caractère tu remets le n si c'est dans une page web normalement </ br> suffis

Maitre2B, il y a 9 ans

Merci pour la réponse.
J'ai trouvé la solution.

Il faut bien faire un

var formatedString = vm.oldString.replace(/\n/g,"<br/>");

mais au niveau du HTML, il faut utiliser ng-bind-html ce qui va interpréter le <br/>

betaWeb, il y a 9 ans

Salut,

Perso, je me suis fait une fonction utilitaire ainsi qu'un petit filtre (utile pour les vues) qui me permet de convertir à la volée les \n en <br> (un peu à la manière de la fonction PHP nl2br) :

// Filtre angular.module('iapp') .filter('nl2brFilter', ['utilsService', function (utilsService) { 'use strict'; return function (str, isXhtml) { if (!str) { return ''; } return utilsService.nl2br(str, isXhtml); }; }]); // Fonction dans mon utilsService.js : /* ... */ nl2br: function (str, isXhtml) { var breakTag = '<br' + (isXhtml ? ' /' : '') + '>'; return (str + '') .replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); }, /* ... */

Dans ton cas, il suffit d'injecter le service utilsService dans ton controller, de faire
var formatedString = utilsService.nl2br(vm.requestDescription)
et le tour est joué ;)