我有用于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>
答案 0 :(得分:7)
$ http(documentation)也会使用另外两种方法返回一个承诺。您正在正确处理的success
和error
您尚未定义的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));
});`