2016-11-03 6 views
0

Ich erhalte diese Daten von der Datenbank im Controller. Ich habe während des Speicherns und während des Datenabrufs Schrägstriche verwendet. Bitte siehe Controller und PHP-Datei. Ich muss diesen Fehler behoben haben. Ich hoffe, dass jemand sagen kann, was ich falsch mache.JSON-Parserfehler: schlechtes Escapezeichen

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

Bitte überprüfen Sie auch .. ionicnotepad.com/www das ist, was ich im Üben mache. Wenn Sie Daten mit einer Unterbrechung darin speichern .. anugular, egal, was
im textarea zeigt. Ich habe alles versucht. $ sce, ng-bind-html, ng-sanitize, sogar die Direktive, wenn Sie divs und contentable verwenden.

//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); 
+3

Mögliche Duplikat sein [Wie JSON.parse lösen: schlechte Steuerzeichen in Stringliteral, in diesem Code] (http: // Stackoverflow. com/questions/17487058/wie zu lösen-json-parse-bad-control-zeichen-in-string-literal-in-diesem-code) –

+0

http://stackoverflow.com/questions/17487058/how-to -solve-json-parse-bad-control-Zeichen-in-String-Literal-in-diesem-Code ODER http://StackOverflow.com/Questions/9684925/JSON-Parsing-error-JSon-Parse-bad-control -character-in-string-literal ODER http://stackoverflow.com/questions/19573525/bad-control-character-error-in-json-parse –

+0

Ich lese das und ich habe 2 Fragen dort. Aber die erste handelt von dem entkommenen Charakter. Ich verstehe nicht, ich muss am Ende einen Backslash in JSON bekommen und wenn das passiert, gibt es einen Fehler. Wenn Sie jedoch genau sehen. das ist ein Stich vor dem, dass ich bin, die auch Backslash hat und das gibt keinen Fehler ... –

Antwort

0

Der Teil "content":"1\2" nicht gültig ist, sollte es "content":"1\\2"

+0

ich versuche und versuche nbut ich kann es nicht funktionieren .. kann mir jemand genau sagen, was zu tun ist? –

+0

Verwenden Sie keine adslashes oder andere Funktionen, bevor Sie den JSON in der Datenbank speichern. Verwenden Sie keine Stropeslashes, während Sie die Daten erneut übertragen. Speichern Sie einfach den JSON als Stich und es sollte in Ordnung sein. JSON encode behandelt das Escaping: 'echo json_encode (['content' => '1 \ 2']); // {"content": "1 \\ 2"} ' –

+0

{" id ":" 462 "," name ":" test "," inhalt ":" a "}]} .. ich habe a \ b eingegeben und \ b ist –