2017-11-15 14 views
0

私はフォームを持っています。ボタンを押すと、非同期Ajaxリクエストを処理する必要があります。 requestForTariff()のすべてのプロセスが終了したら、関数nextButtonHandler()を呼び出す必要があります。私は以下を使用しようとしましたが、要求処理が終わるまで待っていませんでした。ここでjQueryが完了するまでAjaxリクエストを待つことができません

$.when(requestForTariff(requestType.Street)).done(function(){ 
    nextButtonHandler() 
}); 

は私のAjaxの機能は次のとおりです。Adreasコメントへ

function requestForTariff(requestParam) { 
    $.ajax({ 
     type: 'POST', 
     url: //..., 
     data: getRequestJSON(requestParam), 
     success: function(data, status) { 
      if (status == "success") { 
       if (requestParam == requestType.Street) { 
        handleResult(data); 
       } 
       //... 
      } 
     }, 
     contentType: "application/json", 
     dataType: 'json', 
     error: // ... 
    }); 
+2

'requestForTariff()'はプロミス(遅延)を返しません – Andreas

+1

また、1つの引数だけを渡す場合は '$ .when'は必要ありません。あなたがそれを使用しなかった場合、エラーはより明らかになりました。 –

答えて

1

おかげで、

function requestForTariff(requestParam) { 
    return $.ajax({ 
     type: 'POST', 
     url: //..., 
     data: getRequestJSON(requestParam), 
     success: function(data, status) { 
      if (status == "success") { 
       if (requestParam == requestType.Street) { 
        handleResult(data); 
       } 
       //... 
      } 
     }, 
     contentType: "application/json", 
     dataType: 'json', 
     error: // ... 
    }); 

に私のrequestForTariff()機能を変更する私の問題を解決しました。

関連する問題