AngularJS json.parse 在 json 数据的第 1 行第 1 列处意外的数据结尾

AngularJS json.parse unexpected end of data at line 1 column 1 of the json data

本文关键字:数据 json 意外 结尾 parse AngularJS 行第      更新时间:2023-09-26

html

    <!doctype html>
    <html lang="en" ng-app="phonecatApp">
    <head>
  <meta charset="utf-8">
  <title>WrikeAPI</title>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
 <script src="https://code.angularjs.org/1.4.0-beta.5/angular.js" data-semver="1.4.0-beta.5" data-require="angular.js@1.4.0-beta.5"></script>
  <script data-require="angular-route@1.4.0-beta.5" data-semver="1.4.0-beta.5" src="https://code.angularjs.org/1.4.0-beta.5/angular-route.js"></script>
<script>
 var wrikeApiControllers = angular.module('wrikeApiControllers', []);
 var client_id = "";
 var client_secret = "";
 var grant_type = "";
 var refresh_token = "";
wrikeApiControllers.controller('AccessToken', ['$scope', '$http',
  function($scope, $http) {
   $http.post('https://www.wrike.com/oauth2/token?client_id='+client_id+'&client_secret='+client_secret+'&grant_type='+ grant_type +'&refresh_token='+refresh_token).
      success(function(data, status, headers, config) {
        $scope.response = data;
      }).
      error(function(data, status, headers, config) {
      });
  }]);  

var phonecatApp = angular.module('phonecatApp', [
  'ngRoute',
  'wrikeApiControllers'
]);
phonecatApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/access', {
        templateUrl: 'display-access-token.html',
        controller: 'AccessToken'
      }).
      otherwise({
        redirectTo: '/access'
      });
  }]);

</script>
</head>
<body>
  <div ng-view></div>
</body>
</html>

这是我的显示访问令牌.html

      <ul >
    <div ng-repeat="access in response"  class="thumbnail">
      <p>{{response.access_token}}</p>
      <p>{{response.token_type}}</p>
      <p>{{response.expires_in}}</p>
      <p>{{response.refresh_token}}</p>
    </div>
  </ul>

当我使用网络浏览器或使用 Chrome 扩展程序邮递员访问 wrike 时,我在发布这样的帖子后得到回复

    {
    "access_token": "UQldFEZJwifB3PEJWAsvasv3js1uoLk1GCq5ppMGgUijoz8gP46tBxeBd5ud51VGLFNlGjQw-N-N",
    "token_type": "bearer",
    "expires_in": 3599,
    "refresh_token": "8yRHuuzeeEsqE4o0Y1lJe02uhqgGlalxnl798aksCzFn7WxjEtS4iveFhBjEG349w7pDFm3m1sY-A-N"
}

但是当我使用 AngularJS 时,我无法获得响应 POST 成功,但我看不到响应。我在网络浏览器中收到此消息"Json.parse 在 json 数据的第 1 行第 1 列意外的数据结尾"

请帮忙吗?谢谢

这段代码是错误的

<div ng-repeat="access in response"  class="thumbnail">
  <p>{{response.access_token}}</p>
  <p>{{response.token_type}}</p>
  <p>{{response.expires_in}}</p>
  <p>{{response.refresh_token}}</p>
</div>
因为你正在迭代数组"response",

并且每次迭代都有一个"access"对象,所以在每个"p"元素中,你必须使用"access"而不是"response",如下所示:

<div ng-repeat="access in response"  class="thumbnail">
  <p>{{access.access_token}}</p>
  <p>{{access.token_type}}</p>
  <p>{{access.expires_in}}</p>
  <p>{{access.refresh_token}}</p>
</div>

否则,如果预期数据不是数组,则不应使用 ng-repeat,而应仅使用响应对象

我不知道

它是否有帮助,但是您是否尝试过启用cors?

$httpProvider.defaults.useXDomain = true;
$httpProvider.defaults.withCredentials = false;
delete $httpProvider.defaults.headers.common["X-Requested-With"];
$httpProvider.defaults.headers.common["Accept"] = "application/json";
$httpProvider.defaults.headers.common["Content-Type"] = "application/json";
当我

从V1.2版本迁移到V1.4 AngularJS时,我遇到了同样的问题。在我的服务器(JAX-RS)中,我在注释中生成了JSON类型,并在响应中放入了一个字符串。我更改了 Produces(MediaType.APPLICATION_JSON) by Produces( MediaType.TEXT_PLAIN)。AngularJS想要一种JSON格式,但他收到了一个字符串。