Ошибка синтаксического анализа JSON: неверный экранированный символ

Я получаю эти данные из базы данных в контроллере. Я использовал рекламные слэши при сохранении и стропслэши при извлечении данных. Пожалуйста, смотрите контроллер и файл php. Мне нужно исправить эту ошибку. Я надеюсь, что кто-то может сказать, что я делаю неправильно.

{"records":[{"id":"425","name":"a","content":"a\b<br>a<br>b"},{"id":"426","name":"1","content":"1\2"}]} 

Также, пожалуйста, проверьте .. ionicnotepad.com/www это то, что я практикую в создании. Если вы сохраняете данные с разрывом в нем ... угловато, независимо от того, что показывает
в текстовой области. Я пробовал все. $sce, ng-bind-html, ng-sanitize, даже директива, если вы используете div и спорные.

//controller
app.value('count', 0);

app.controller('retrieveController', ['$sce','noteRetrieve','$state','alterNote','count','$ionicModal','$scope', function($sce, noteRetrieve, $state, alterNote, count, $ionicModal, $scope){
  var controller = this;
  var temp = localStorage.getItem("ascOrDsc");

  if(temp == "asc" || temp == null){
    controller.orderValue = 'id';
    controller.buttonDown = false;
    controller.buttonUp = true;
    localStorage.setItem("ascOrDsc", "asc");
  } else {
    controller.orderValue = '-id';
    controller.buttonUp = false;
    controller.buttonDown = true;
  }


  noteRetrieve.all()
    .success(function(data){

      var newData = data.replace(/&lt;br&gt;/g, '<br>');
      newData = newData.substring(1, newData.length - 1);
      // newData = angular.fromJson(newData);
      console.log(newData);

      // controller.allSaved = newData.records;
      // for(i = 0; i < newData.records.length; i++){
      //   count++;
      // }
      // controller.noOFNotes = count;
  });



  controller.deleteNote = function(noteId, noteName, noteContent){

    var currentNote = {
      id: noteId,
      name : noteName,
      content : noteContent
    };

    controller.itemId = noteId;

    alterNote.delete(currentNote)
      .success(function(){
          $state.go('notes.allnotes', {}, {reload: true});
      });
    };



    controller.changOrder = function(){
      var ascOrDscValue = localStorage.getItem("ascOrDsc");
      if(ascOrDscValue == 'asc'){
        controller.orderValue = '-id';
        controller.buttonUp = false;
        controller.buttonDown = true;
        localStorage.setItem("ascOrDsc", "desc");
      } else {
        controller.orderValue = 'id';
        controller.buttonUp = true;
        controller.buttonDown = false;
        localStorage.setItem("ascOrDsc", "asc");
      }
     };

     $ionicModal.fromTemplateUrl('templates/createNote.html', {
       scope: $scope,
       animation: 'slide-in-up'

     }).then(function(modal){
       $scope.modal = modal;
     });

     $scope.createModal = function() {
       $scope.modal.show();
       localStorage.setItem('newNoteAvailable', 'no');
     };

     $scope.closeModal = function() {
       if(localStorage.getItem('newNoteAvailable') == 'yes'){
         $state.go('notes.allnotes', {}, {reload: true});
       } else {
         $state.go('notes.allnotes', {}, {reload: false});
       }
       $scope.modal.hide();
       $ionicModal.fromTemplateUrl('templates/createNote.html', {
         scope: $scope,
         animation: 'slide-in-up'

       }).then(function(modal){
         $scope.modal = modal;
       });
     };

}]);



//php

$sql = "SELECT *
        FROM noteFile";
$result = mysqli_query($conn, $sql);

$outp = "";
while($rs = $result->fetch_array(MYSQLI_ASSOC)) {
    if ($outp != "") {
      $outp .= ",";
    }
    $outp .= '{"id":"'  . $rs["id"] . '",';
    $outp .= '"name":"'   . $rs["name"] . '",';
    $outp .= '"content":"'. $rs["data"] . '"}';
}

$outp ='{"records":['.$outp.']}';


$outp = json_encode($outp);

// var_dump($outp);

$outp = stripslashes($outp);


echo ($outp);

person Bhanu Thareja    schedule 03.11.2016    source источник
comment
stackoverflow.com/questions/17487058/ ИЛИ stackoverflow.com/questions/9684925/ ИЛИ stackoverflow.com/questions/19573525/   -  person Anant Kumar Singh    schedule 03.11.2016
comment
Я прочитал это, и у меня есть 2 вопроса. Но первый касается сбежавшего персонажа. Я не понимаю, что я должен получить обратную косую черту в конце json, и когда это происходит, это дает ошибку. Впрочем, если посмотреть внимательно. это жало до того, что я есть, у которого также есть обратная косая черта, и это не дает ошибки ...   -  person Bhanu Thareja    schedule 03.11.2016


Ответы (1)


Часть "content":"1\2" недействительна, она должна быть "content":"1\\2"

person Philipp Dahse    schedule 03.11.2016
comment
я пытаюсь и пытаюсь, но я не могу заставить его работать .. кто-нибудь может сказать мне, что именно делать? - person Bhanu Thareja; 03.11.2016
comment
Не используйте рекламные слэши или любые другие функции, пока не сохраните JSON в базе данных. Также не используйте стропслэши при извлечении данных. Просто сохраните json как sting, и все будет в порядке. Кодировка JSON обрабатывает экранирование: echo json_encode(['content' => '1\2']); //{"content":"1\\2"} - person Philipp Dahse; 03.11.2016
comment
{id:462,name:test,content:a}]} .. я ввел a\b и \b сбежал - person Bhanu Thareja; 03.11.2016
comment
Ошибка: JSON.parse: неверный управляющий символ в строковом литерале в строке 1 столбца 406 данных JSON. это ошибка, которую я получаю с этим подходом - person Bhanu Thareja; 03.11.2016
comment
при сохранении перед почтовым вызовом в angular я делаю toJson, когда я достигаю php-файла для сохранения, я делаю декодирование json.. и json_encode перед отправкой данных обратно с сервера, и когда я получаю данные обратно в контроллер, я делаю fromJson.. Я надеюсь, что все это в порядок... - person Bhanu Thareja; 03.11.2016