设置成功和错误响应

时间:2014-11-03 18:27:47

标签: ruby-on-rails angularjs

我的角度代码中有一个ajax请求,用于通过我的API签署用户:

$http.post(LOGIN, {
    username: username,
    password: password
}).success(function(response){
    console.log('response:')
    console.log(response);
    console.log('_________')
}).error(function(response){
    console.log('response:')
    console.log(response);
    console.log('_________')
})}

response变量外,它完美无缺。如果触发成功,则将本地response变量设置为空字符串(未定义),如果触发失败,则将response变量设置为空字符串。

这是我在控制台中得到的内容:

POST http://0.0.0.0:3000/sessions 401 (Unauthorized) 
response:

_________ 

如果我返回200状态:

response:

_________ 

这是我的服务器端导轨代码:

def login
    status = :unauthorized
    status = :ok if User.find_by(username: session_params[:username]).try(:authenticate, session_params[:password])
    head status
end

在我阅读的书中,我们实际上向用户显示了错误响应。我应该如何更改我的服务器端代码,以便response填充实际消息?或者我应该改变我的客户端代码?

1 个答案:

答案 0 :(得分:0)

根据$http documentation(部分返回)成功和错误接收下一个属性:

success(function(data, status, headers, config, statusText) {}

所以你看到第一个参数是数据,状态是第二个。您不会返回任何数据。要获取状态代码,您必须执行下一步:

.success(function(data, status){
    console.log('response:')
    console.log(data + ' ' + status);
    console.log('_________')