通过json保存数据

时间:2014-02-13 22:40:57

标签: javascript json angularjs grails grails-2.0

我使用grails 2.3.4作为angularjs 1.2.8应用程序的后端。

我想将数据保存到数据库中。我试图像这样实现它:

testApp.controller('testController', function($scope, $rootScope, $http, $location) {
$scope.product = {};

$scope.saveProduct = function() {
    console.log('call saveProduct');
    $http
     .post($rootScope.appUrl + '/product.json', $scope.book)
     .success(function(data, status, headers, config) {
  $location.path('/product');
     }).error(function(data, status, headers, config) {
    });
}

});

原则上这应该有效,因为我的后端使用@Resource(uri='/product')来提供RESTFUL API。我可以调用所有现有产品:http://localhost:8080/testApplication/product.json

然而,Chrome控制台诊断让我:

POST http://localhost:8080/testApplication/undefined/product.json 404 (Not Found)

undefined使此链接无效。有任何建议如何删除它?

有关如何更改功能以使其工作的任何建议吗?

1 个答案:

答案 0 :(得分:1)

当您致电$rootScope.appUrl时,undefined似乎$http.post()。尝试将$rootScope.appUrl的值记录到控制台以确保。如果是undefined,请将其设置为您需要匹配后端所需的URL的任何内容。


编辑:我不熟悉Angular的细节或者究竟是什么传递给这个方法,但是你可以通过检查变量是否定义来更加健壮,如下所示:

$scope.saveProduct = function() {
  var url = 'products.json';

  if($rootScope && $rootScope.appUrl) {
    url = $rootScope.appUrl + '/' + url;
  }

  console.log('call saveProduct');
  $http
  .post(url, $scope.book)
  .success(function(data, status, headers, config) {
    $location.path('/product');
  })
  .error(function(data, status, headers, config) {});
}