2014-02-13 1 views
-1

Я использую grails 2.3.4 в качестве бэкэнд для своего приложения angularjs 1.2.8.Сохранить данные по json

Я хочу сохранить свои данные в базе данных. Я попытался реализовать его следующим образом:

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

});

В принципе это должно работать, потому что мой backend использует @Resource(uri='/product') для предоставления RESTFUL API. Я могу назвать все существующие продукты, как это: http://localhost:8080/testApplication/product.json

Однако диагноз хромированной консоли дает мне:

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

undefined делает эту ссылка не работает. Любые предложения по его удалению?

Любые предложения о том, как я могу изменить свою функцию, чтобы сделать эту работу?

ответ

1

Похоже, $rootScope.appUrl есть undefined при звонкех $http.post(). Попробуйте записать значение $rootScope.appUrl на консоль, чтобы убедиться. Если это undefined, установите его в соответствии с тем, что вам нужно, чтобы соответствовать URL-адресу, который ожидает ваш бэкэнд.


Edit: Я не знаком со спецификой Угловое или что именно получает передается этому методу, но вы можете быть немного более надежными, проверяя, чтобы увидеть, если переменная определена, как это:

$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) {}); 
} 
+0

Thx для вашего ответа! Дело в том, что единственное слово, которое отделило меня от сохранения, - это «неопределенный». Этот url сохранит мои данные: 'http: // localhost: 8080/testApplication/product.json' Любые предложения о том, как убить неопределенный в javascript? – mrquad

+1

Я отредактировал свой ответ, чтобы показать вам, как это сделать. –

+0

Thx для вашего ответа! Моя проблема в том, что я до сих пор получаю такую ​​ссылку: «http: // localhost: 8080/product» – mrquad

 Смежные вопросы

  • Нет связанных вопросов^_^