AngularJS $ http请求POST

时间:2015-12-29 14:58:59

标签: javascript html angularjs jax-rs

我想从我的服务器访问POST方法,但是当我记录响应时,它总是返回status = 0,任何人都可以帮助我或给我一个建议吗? 注意:我已经在Postman中尝试了我的方法,无论如何它的作品

这是我的控制器

nameApp.controller('loginCtrl',  ['$scope','$location','Flash','$sessionStorage', '$cookieStore','$http',function (scope,location,Flash,sessionStorage,cookieStore,http) {

scope.nim='';
scope.pass='';
if(cookieStore.get('current')!=null){
    location.path('/homepage')
}
scope.login = function() {

    if((scope.nim=='')){
        Flash.create('danger', 'Invalid Username / Password', 'custom-class');
    }else{

        http.post('http://localhost:8084/iec3/rest/users/login',{'username':'admin','password':'bukanadmin'},{headers: {'Content-Type': 'application/json'}
        }).then(function successCallback(response) {
               console.log("GREAT");
              }, function errorCallback(response) {
                console.log(response)
              });
    }
}
}]);

这是我的控制器

的登录方法
@Path("/login")
@POST
@Consumes(value = MediaType.APPLICATION_JSON)
@Produces(value = MediaType.APPLICATION_JSON)
public Response login(User user) {
    UserDao ud = new UserDao();
    User dariDB = ud.login(user.getUsername(), user.getPassword());
    dariDB.setPassword("");
    return Response.ok(dariDB)
            .header("Access-Control-Allow-Origin", "*")
            .header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization")
            .header("Access-Control-Allow-Credentials", "true")
            .header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD")
            .header("Access-Control-Max-Age", "1209600")
            .build();
}

这是我尝试记录响应时的错误

Object {data:null,status:0,headers:dd /<(),config:Object,statusText:""}

2 个答案:

答案 0 :(得分:0)

您的ajax请求似乎没有达到您的控制器方法,通常在取消请求时返回状态0。检查控制器方法中的@path值和http://localhost:8084/iec3/rest/users/login映射。

有关状态0的更多详细信息 http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute

答案 1 :(得分:0)

您需要验证您的请求是否已到达服务器。您的登录方法是否被调用?如果您在同一台主机上,则无需传递完整的URL,您可以通过其路径直接呼叫您的api。

对于新手,我建议你避免使用$http快捷方式。为了更好地理解和阅读,您应该使用$http之类的

$http({
  method: 'POST',
  url: 'http://localhost:8084/iec3/rest/users/login',
  data: {
    username:'admin',
    password:'bukanadmin'
  },
  headers: {
    'Content-Type': 'application/json'
  }
}).then(function successCallback(response) {
  console.log("GREAT");
}, function errorCallback(response) {
  console.log(response)
});