2014-11-03 5 views
0

У меня есть запрос 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 был заполнен фактическим сообщением? Или мне следует каким-то образом изменить код моего клиента?

ответ

0

Согласно $http documentation (разделу возвратов) успех и ошибки получить следующие свойства:

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

Итак, вы видите, что первые пары это данные и статус второй. Вы не возвращаете данные. Чтобы получить код статуса, вам необходимо сделать следующее:

.success(function(data, status){ 
    console.log('response:') 
    console.log(data + ' ' + status); 
    console.log('_________') 
Смежные вопросы