SyntaxError:意外的令牌<在Object.parse(native)的位置0的JSON中(AngularJS)

时间:2016-06-21 15:46:30

标签: javascript php angularjs json

我已经使用php脚本(save-data.php)将我的数据成功保存到json文件中,但是我无法使用我的get-data.php脚本正确获取它。

错误消息: angular.js:12520 SyntaxError:意外的令牌<在Object.parse(native)

的位置0的JSON中

保存-data.php

<?php

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

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

fwrite($file, $json);

fclose($file);

?>

获取-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

?>

保存-data.json

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

样本控制器

// 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);
    });
  };

编辑:我不需要将json文件解码为json,也不需要解析它(所有注释都在脚本中)。

2 个答案:

答案 0 :(得分:11)

在错误中获得Unexpected token < in JSON as position 0的时间总是99.9999999%,您没有从服务器接收json。之后您收到了一条HTML错误消息,其中包含您的json。

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

<中的前导<p>...是错误的来源,因为该位置为0(第一个字符)。

检查从服务器返回的原始数据,并修复PHP正在吐出的错误/警告。

答案 1 :(得分:2)

请检查您的PHP文件。因此可能存在不需要的回声,因此json响应无法得到确切的响应。 我以这种方式解决了我的问题。 希望这有用!!