如何在AngularJS中获得POST后的响应?

时间:2014-04-11 19:03:23

标签: javascript angularjs

我有用于REST的API的Java应用程序。 我为它做了前端。现在我正在使用授权。

当我发布POST请求应用程序返回我这样的JSON消息: 如果登录和传递是正确的

{
    "result": {
        "token": "shgvojhhsifav37o5a3sebc3if"
    }
} 

如果他们不对:

{
    "error": {
        "code": 10,
        "message": "Incorrect login or password"
    }
}

我可以在浏览器中看到响应,但不能在JavaScript代码中使用它。

我怎样才能得到它并检查下一步行动。

我的JavaScript:

controllers.controller('userAuthCtrl', ['$scope','$http',
  function($scope, $http){
        $http({
            method: 'POST',
            url: '/rest/api/auth/login',
            data: '?login=test&password=passwo3rd',
            headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
        }).
            success(function(data, status, header, config) {
                console.log(header());
                console.log(config);

                $scope.dataU = data;
                $scope.statusU = status;
            }).error(function(data, status, header, config){
                console.log(header());
                console.log(config);
            })

  }
]);

我的测试HTML现在很简单。

<div class="testCont" ng-controller="userAuthCtrl">

</div> 

2 个答案:

答案 0 :(得分:7)

$ http(documentation)也会使用另外两种方法返回一个承诺。您正在正确处理的successerror您尚未定义的success,但您可以在$http({[options]}) .success(function(data, status, headers, config){}) .error(function(data, status, headers, config){}); 函数后轻松链接。

$http({})
    .success(function(data, status, headers, config){
        /*called for result & error because 200 status*/
        if (data.result){
            //handle success here
        } else if (data.error {
            //handle error here
    })
    .error(function(data, status, headers, config){
        /*handle non 200 statuses*/
    });

如果您的网络响应仍然返回成功或失败状态200,那么您可以在成功处理程序中处理它:

data: '?login=test&password=passwo3rd

根据评论,您还需要更改此内容:

data: {login: 'test', password: 'passwo3rd'}

为:

{{1}}

这是因为它不是查询字符串,而是JSON格式的请求体的一部分。

答案 1 :(得分:2)

它可能对您有所帮助。

 $http.post("Your URL").success(function(data) {
        // success
        here 


    }).error(function(error) {
        // error
        console.log(JSON.stringify("Failed to get t&c: " + error));
    });`