Reputation: 3068
I have an angular app where i am trying to post some elements into a database. Here i am using a modal where i check some courses such that the checked courses will be posted using the $http.post
Here is the function to post the data:
$scope.ok = function () {
//$scope.subcategory.subcategory2 = [];
for(var i = 0; i < $scope.selectedCourses.length; i++){
debugger
//$scope.subcategory.subcategory2.push({course: $scope.selectedCourses[i], term:"--",credit:"--",grade:"--"});
var variablesToSend = {
"student": 2773951,
"course_name": $scope.selectedCourses[i].course.course_name,
"title": $scope.selectedCourses[i].course.title,
"credit": 3,
}
$http.post('/api/studentplannedcredit/', variablesToSend).then(function(response){
console.log(response);
//alert('post added');
//document.location.reload(true);
}, function(response){
console.log(response);
alert('Unable to add Course');
});
}
$modalInstance.close();
};
The error i am getting here is, when i calling the function, it gives me the following error:
Error: [$rootScope:inprog] $digest already in progress
http://errors.angularjs.org/1.2.8/$rootScope/inprog?p0=%24digest
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:78:12
at beginPhase (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:12262:15)
at Scope.$get.Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:12048:11)
at Scope.$delegate.__proto__.$apply (<anonymous>:855:30)
at HTMLDivElement.<anonymous> (http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.10.0.min.js:8:20385)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:2612:10
at forEach (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:309:20)
at HTMLDivElement.eventHandler (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:2611:5)
at http://127.0.0.1:8000/static/js/app.js:161:7
at deferred.promise.then.wrappedErrback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.js:10952:78) angular.js:9413
(anonymous function) angular.js:9413
$get angular.js:6832
$get.Scope.$apply angular.js:12051
$delegate.__proto__.$apply VM437152:855
(anonymous function) ui-bootstrap-tpls-0.10.0.min.js:8
(anonymous function) angular.js:2612
forEach angular.js:309
eventHandler angular.js:2611
(anonymous function) app.js:161
deferred.promise.then.wrappedErrback angular.js:10952
deferred.promise.then.wrappedErrback angular.js:10952
(anonymous function) angular.js:11078
$get.Scope.$eval angular.js:11949
$get.Scope.$digest angular.js:11775
$delegate.__proto__.$digest VM437152:844
$get.Scope.$apply angular.js:12055
$delegate.__proto__.$apply VM437152:855
done angular.js:7837
completeRequest angular.js:8020
xhr.onreadystatechange angular.js:7976
Upvotes: 0
Views: 272
Reputation: 323
I am assuming, $modalInstance is the issue here.
Try to run without
$modalInstance.close();
Upvotes: 0
Reputation: 1206
Iam not sure if it's somewhere in your example or just something you do wrong elsewhere. Down below is a working example of a POST in angular.
var config = {
method: 'POST',
url: '/api/studentplannedcredit/',
data: variablesToSend
};
$http(config)
.success(function(data, status, headers, config) {
console.log(data);
})
.error(function(data, status, headers, config) {
console.log(data);
});
PS: Dont POST for each loop.. that will hammer the API badly.. collect the data first and then send 1 POST only.
Upvotes: 1