【问题标题】:SyntaxError: Unexpected token < in JSON at position 0 at Object.parse (native) (AngularJS)SyntaxError:Object.parse(本机)(AngularJS)位置0处JSON中的意外标记<
【发布时间】:2016-06-21 15:46:30
【问题描述】:

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

错误消息: angular.js:12520 SyntaxError: Unexpected token

保存数据.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

?>

保存数据.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 也不需要解析它(所有都在脚本中注释)。

【问题讨论】:

  • 如果您在浏览器中转到get-data.php 会发生什么。我可以 100% 保证您的 php 代码不会被执行,它会按原样返回文件。
  • 你为什么在你的 get-data.php 中调用json_decode()?这会将您的 JSON 对象转换为数组,因此显然 angular 无法在此之后解析它(JSON.parse() 需要 JSON 对象)。无需转换即可通过。
  • 无转换 (json_decode()): angular.js:12520 SyntaxError: Unexpected token o in JSON at position 1 at Object.parse (native)
  • 听起来你的端点没有返回 json。

标签: javascript php angularjs json


【解决方案1】:

总是有 99.9999999% 的时间你在错误中得到Unexpected token &lt; in JSON as position 0,你没有从服务器接收到 json。之后您收到一条带有 json 的 HTML 错误消息。

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

&lt;p&gt;... 中的前导 &lt; 是错误的来源,因为那是位置 0(第一个字符)。

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

【讨论】:

  • 我不需要将json文件解码为json也不需要解析它。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2021-12-21
    相关资源
    最近更新 更多