Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-成功发出第一个请求后,POST请求不发送数据_Angularjs_Http_Http Post - Fatal编程技术网

AngularJS-成功发出第一个请求后,POST请求不发送数据

AngularJS-成功发出第一个请求后,POST请求不发送数据,angularjs,http,http-post,Angularjs,Http,Http Post,这真的很奇怪。我在我的应用程序中使用AngularJS。在登录期间,我发出一个HTTP POST请求;数据发送正确,我收到正确的响应。然后我注销-这会将我返回到登录页面-我执行相同的http req,但数据不是通过post请求发送的。在console.log上,我看到$scope数据是正确的-只是没有发送POST数据。 如果我硬刷新登录页面,它会再次工作。因此,我的问题是,在没有刷新的情况下,不会发出连续的请求。这是我的登录功能- $scope.login = function() {

这真的很奇怪。我在我的应用程序中使用AngularJS。在登录期间,我发出一个HTTP POST请求;数据发送正确,我收到正确的响应。然后我注销-这会将我返回到登录页面-我执行相同的http req,但数据不是通过post请求发送的。在console.log上,我看到$scope数据是正确的-只是没有发送POST数据。 如果我硬刷新登录页面,它会再次工作。因此,我的问题是,在没有刷新的情况下,不会发出连续的请求。这是我的登录功能-

$scope.login = function() {    
        var request = $http({
            method: "POST",
            url: URL + "login",
            crossDomain: true,
            data: this.loginData
        });
        request.success(function(data) {                  
            var response = angular.fromJson(data);   
            if(!response["error"]) {
                sessionStorage.email = response["email"];
                sessionStorage.password = response["password"];
                sessionStorage.userId = response["id"];                
                $location.path('/dashboard');                        
            } else {
                $scope.responseMessage = response["message"][0];
            }

        });
        request.error(function(data) {
            console.log(data);
        });
    }
这是我的注销功能-

$scope.logout = function() {
        sessionStorage.clear();        
        $location.path("/login");
    }

找到答案并张贴在这里,以防有人遇到类似问题。 为内容类型设置标题的工作:

var request = $http({
            method: "POST",
            url: URL + "login",
            crossDomain: true,
            headers: {
                "content-type": "application/json"
            },
            data: this.loginData
        });

这可能是一个糟糕的答案,但在顶部只需将var request=null;这将与承诺没有以某种方式正确解决有关。这不起作用:(尝试通过$scope访问this.loginda。即$scope.logindaddin也不起作用!您使用的路由器是什么?尝试使用它导航回登录页面,这样它将触发正确的角度生命周期破坏事件,并尝试调用$route.reload();或注销方法中的$state.reload()。