2016-06-21 26 views
6

mam powodzeniem zapisywania moich danych do pliku json ze skryptu php (save-data.php), ale jestem w stanie aby pobrać go poprawnie za pomocą mojego skryptu get-data.php. KomunikatSyntaxError: Nieoczekiwany token <w JSON w pozycji 0 na Object.parse (native) (angularjs)

Błąd: angularjs: 12520 SyntaxError: Nieoczekiwany token < w JSON w pozycji 0 przy Object.parse (natywnej)

Save-data.php:

<?php 

$json = file_get_contents("php://input"); 

$file = fopen('C:/test/save-data.json','w+'); 

fwrite($file, $json); 

fclose($file); 

?> 

get-data.php:

<?php 

//header('Content-Type: application/json'); 

$json = file_get_contents('C:/test/save-data.json'); 

//Decode JSON 
//$json_data = json_decode($json, true); 

//Print data 
echo $json 

?> 

Save-data.json:

{ 
    "id": "179", 
    "var1": "variable1", 
    "var2": "variable2" 
} 

próbka kontrolera:

// save data (myModel: id, var1, var2) 
    $scope.save = function() { 
    console.log('Creating a JSON'); 
    $scope.jsonString = angular.toJson($scope.myModel, true); 
    $http.post('save-data.php', $scope.jsonString).then(function(data) { 
     $scope.msg1 = 'Data saved'; 
    }); 
    $scope.msg2 = 'Data sent: '+ $scope.jsonString; 
    }; 

// get data 
    $scope.get = function() { 
    $http.get('get-data.php').then(function(data) { 
     //$scope.my_data = JSON.parse(data); 
     console.log(data.data); 
    }); 
    }; 

EDIT: I nie trzeba rozszyfrować plik json do JSON ani go zanalizować (wszystkie skomentowane w skryptach).

+0

Co się stanie, jeśli przejdziesz do 'get-data.php' w przeglądarce. Mogę w 100% zagwarantować, że twój kod php nie zostanie wykonany i zwróci plik bez zmian. –

+2

Dlaczego dzwonisz 'json_decode()' w get-data.php w ogóle? Spowoduje to konwersję twojego obiektu JSON do tablicy, więc oczywiście kątowa nie może go później sparsować ('JSON.parse()' oczekuje obiektu JSON). Po prostu przekazuj to bez tej konwersji. – mitkosoft

+0

bez konwersji (json_decode()): angular.js: 12520 SyntaxError: nieoczekiwany token w JSON na pozycji 1 w Object.parse (natywny) – Ariana

Odpowiedz

11

Niezmiennie, 99,9999999% czasu, w którym otrzymałeś Unexpected token < in JSON as position 0 w błędzie, NIE dostałeś json z serwera. Otrzymałeś komunikat o błędzie HTML ze swoim jsonem następującym po nim.

<p>PHP warning: blah blah blah</p> 
{"foo":"bar"} 

Wiodącym < w <p>... jest gdzie błąd pochodzi, bo to pozycja 0 (pierwszy znak).

Sprawdź surowe dane wracające z serwera i napraw wszelkie błędy/ostrzeżenia wypluwane przez PHP.

+0

Nie trzeba dekodować pliku json do json ani go analizować. – Ariana

2

Sprawdź plik PHP. W tym może być niepożądane echo, więc odpowiedź JSON nie może uzyskać dokładnej odpowiedzi. Rozwiązuję mój problem w ten sposób. Mam nadzieję, że to jest pomocne !!

Powiązane problemy