EDIT2:
На самом деле, для функции .always
, если ответ будет успешным, аргументы (data, textStatus, jqXHR)
, но если это провал, это (jqXHR, textStatus, errorThrown)
.
В Документах, он сказал так:
jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { })
jQuery Docs
Таким образом, вы должны были бы в if/else
для отображения jqXHR.status
в всегда для всех ответов.
EDIT:
Ваш response
только объект, который вы получаете назад от render
вызова. У него нет понятия статуса. Вот почему это не определено, когда вы на нем .status
. Я думаю, что .always
необходим b/c, он будет охватывать как .done
, так и .fail
ответы от контроллера. Если вы только когда-нибудь, чтобы получить метод .done
, и вы хотите, чтобы заботиться о нем, вы можете сделать это (обратите внимание на дополнительный аргумент textStatus
):
$.ajax({
type : "POST",
url : '/orders/create_or_update',
dataType: 'json',
contentType: 'application/json',
data : JSON.stringify(params)
})
.done(function(response, textStatus, xhr){
console.log(xhr.status)
console.log(response)
})
Таким образом, вы должны быть в состоянии сделать это:
$.ajax({
type : "POST",
url : '/orders/create_or_update',
dataType: 'json',
contentType: 'application/json',
data : JSON.stringify(params)
})
.done(function(response){
console.log(response.status)
console.log(response)
}).always(function(a, textStatus, b){
console.log(a.status); // One of these two will be `undefined`
console.log(b.status);
})
И это будет печатать статус в журнале.
Возможный дубликат: http://stackoverflow.com/questions/5344145/how-to-get-response-status-code-from-jquery-ajax –