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 :/
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/>
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é ?
ç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
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é ;)