2

我正在尝试在这样的响应服务器之后进行服务器调用

 $http.post($scope.serviceSave, {
            'person': $scope.person
        }).success(function(data){
            $http.get($scope.serviceList);
        });

但是当我尝试它时,我得到了

Error: $digest already in progress 

并没有提出要求。

我正在像这样使用 jquery

<a href="#" ng-click="setContent('/people/list')" >People</a>

$scope.setContent = function(service){
            $http.get(service);
}

然后

 $http.post($scope.serviceSave, {
            'person': $scope.person
        }).success(function(){
            $("a:contains(People)").click();
        });

我可以提出请求,强制点击,但我得到了

Error: $digest already in progress

然而

请问,正确的格式是什么?

4

1 回答 1

0

我试图重现这一点,JsFiddle但无法做到。看起来在另一个回调中调用一个请求是完全有效的。您是否$http为每个请求使用服务?不这样做就是自找麻烦。

工作示例(请记住,我正在那里解决模拟服务,这可能是一个因素):

$http.post("/echo/json/").success(function() {            
        console.log("finished 1st");
        $http.get("/echo/json/").success(function() {
            console.log("finished 2nd");
        });
});

但是,从另一个回调中调用一个回调被认为是一种不好的做法。如前所述(某人),使用 deferred 要好得多:

var deferred = $q.defer();
var promise = deferred.promise;

$http.post("/echo/json/").success(function() {            
    console.log("finished 1st");
    deferred.resolve();            
});

promise.then(function(){
    $http.get("/echo/json/").success(function() {
        console.log("finished 2nd");
    });
});

例如上面的工作小提琴:

于 2013-04-22T10:36:52.717 回答