2016-03-23 1 views
1

Я делаю запрос на сервер с JQuery и методом $ .when.

$.when(ajaxRequest(param)).done(function(response){ 
    console.log(responseData); 
    }); 

моя функция Аякса выглядит следующим образом:

function ajaxRequest(param){ 
    var requestedData; 
    return $.ajax({ 
    type: 'POST', 
    url: myurl, 
    data: { 
     setParam:param 
    }, 
    error: function(data){ 
     console.log(data); 
     return(data); 
    } 
    }); 
} 

Все отлично работает, если сервер возвращает 200 OK. Но если что-то не так, сервер отвечает на 500. Как вернуть тело ответа вызывающему методу?

Ошибка отправляется с помощью console.log по методу ajaxRequest, но не возвращается к вызывающему методу?

+1

Добавить в '.fail()' 'обработчик после .done()' –

+0

@ArunPJohny Спасибо за подсказку! Работал! – rockZ

ответ

2

Предоставлено js по Вопросу $.when() не обязательно, поскольку $.ajax() возвращает объект обещания jQuery. var requestedData; не установлен в значение, будет undefined по адресу .done(); использовать response в .then() или .done() в качестве возвращенных данных; .then() обрабатывать как успех и ошибок ответов

function ajaxRequest(param){ 
    return $.ajax({ 
    type: 'POST', 
    url: myurl, 
    data: { 
     setParam:param 
    } 
    }); 
} 

ajaxRequest(param) 
.then(function(response){ 
    console.log(response); 
    return response 
} 
// handle errors at second function of `.then()` 
, function err(jqxhr, textStatus, errorThrown) { 
    console.log(textStatus, errorThrown); 
    return errorThrown; 
}); 
Смежные вопросы