2016-03-23 10 views
1

私はJQueryと$ .whenメソッドを使ってサーバにリクエストを行います。

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

私のAjaxの機能は次のようになります。サーバーは、200 OKを返す場合

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

すべてが正常に動作します。しかし、何か間違ったものがあれば、サーバーは500で答えます。どのようにしてレスポンス本文を呼び出しメソッドに返すことができますか?

errorbodyは、ajaxRequestメソッドでconsole.logで出力されますが、呼び出し元のメソッドに返されませんか?

+1

ヒントのための.done ''後.fail() 'ハンドラを追加します()' –

+0

@ArunPJohnyのおかげで両方を処理するために!働いた! – rockZ

答えて

2

質問$.when()jsは不要です。$.ajax()はjQuery約束オブジェクトを返します。 var requestedData;が値に設定されていない場合、undefined.done()になります。戻り値として.then()または.done()で利用可能なresponseを使用してください。 .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; 
}); 
関連する問題