2016-03-08 110 views
1

我对我的下面的角码感到有点沮丧,因为它不会将JSON数据发送到我在同一台机器上运行的基于spring boot的微服务。请帮助我!仅供参考,我是JavaScript世界的新手。

$scope.addBook = function() { 
    var data = $.param({ 
     json: JSON.stringify({ 
      name: $scope.bookName, 
      isbn: $scope.isbn, 
      author: $scope.authorName, 
      pages: $scope.pages 
     }) 
    }); 

    var config = { 
     headers : { 
      'Content-Type': 'application/json' 
     } 
    } 

    var result = $http.post('http://localhost:8080/book', data, config); 
    result.success(function (data, status, headers, config) { 
     $scope.result = JSON.stringify({data: data}); 
    }); 
    result.error(function (data, status, header, config) { 
     $scope.result = JSON.stringify({data: data}); 
    }); 
}; 
+0

你得到的错误是什么? –

+0

你在控制台中得到什么?你在哪里得到错误?你能够在成功回调后访问成功数据吗? –

回答

1

只是通过你的数据对象是这样的:

$scope.addBook = function() { 
     var data = 
      { 
       name: $scope.bookName, 
       isbn: $scope.isbn, 
       author: $scope.authorName, 
       pages: $scope.page 
     }; 

     var config = { 
      headers : { 
       'Content-Type': 'application/json' 
      } 
     } 

     var result = $http.post('http://localhost:8080/book', data, config); 
     result.success(function (data, status, headers, config) { 
      $scope.result = JSON.stringify({data: data}); 
     }); 
     result.error(function (data, status, header, config) { 
      $scope.result = JSON.stringify({data: data}); 
     }); 
    }; 

你并不需要字符串化它。如果您的服务正在返回JSON,您可能也可以移除您获得的结果的字符串化。

+0

我有另一个问题 - XMLHttpRequest无法加载http://127.0.0.1:8080/book。对预检请求的响应不会通过访问控制检查:请求的资源上不存在“访问控制 - 允许来源”标头。原因'http:// localhost:63342'因此不被允许访问。我已经修复使用此链接:http://stackoverflow.com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource –

2

你并不需要运行JSON.stringify$.param,只需直接传递对象$http.post()。 Angular为您创建JSON。

0

我认为$http不发送stingifyed的数据。

尝试

$scope.addBook = function() { 
    var data = { 
      name: $scope.bookName, 
      isbn: $scope.isbn, 
      author: $scope.authorName, 
      pages: $scope.pages 
     }; 

    $http.post('http://localhost:8080/book', data) 
     .success(function (data, status, headers, config) { 
      $scope.result = JSON.stringify({data: data}); 
     }) 
     .result.error(function (data, status, header, config) { 
      $scope.result = JSON.stringify({data: data}); 
     }); 
}; 
0

数据更改为以下。它应该工作

var data = $.param({ 
       'name': $scope.bookName, 
       'isbn': $scope.isbn, 
       'author': $scope.authorName, 
       'pages': $scope.pages 
     });