0

次の問題があります。

$('#id').on('click', '.class', function(){
 // it is doing something and
 // executing AJAX request
 // with the data from request it is doing something
} // this is onclick handler

コードの後半でもそれを実行する必要があり、実行後に this の ajax 実行に依存する別の関数を実行する必要があるため、このonclick handlerようなことをしています

$('#id .class').click();
anotherFunction();

機能していません。ajax リクエストが完了していないため、問題は理解できます。

Deferred objectのアイデアを使用して、正しい実行を実現しようとしました。

$.when( $('#id .class').click() ).then( anotherFunction() );

そして、コールバックで自動実行される関数のアイデアを使用します:

(function(o, callback){
    $('#id .class').click()
})(null, anotherFunction() );

どちらのアイデアも失敗しました。

anotherFunction()と を変更せずに意図した機能を実現する方法はありますonclick functionか?

4

1 に答える 1

0

あなたの質問を完全に理解しているかどうかはわかりませんが、対応する $.ajax 応答メソッドで onsuccess / onerror コードを実行できない理由は何ですか?

$.ajax({
  type: 'POST',
  url: "your url",
  data: "your data",
  error: function(jqXHR, textStatus, errorThrown) { ... },
  success: function (data, textStatus, jqXHR) { ... }
});

また、このように ajax の実行部分を独自の関数に入れて、イベント ハンドラーや他のすべての場所から呼び出してみませんか?

function ajaxMe(onerror, onsuccess)
{
    $.ajax({
      type: 'POST',
      url: "your url",
      data: "your data",
      error: function(jqXHR, textStatus, errorThrown) { onerror(...) },
      success: function (data, textStatus, jqXHR) { onsuccess(...) }
    });
}
于 2012-11-18T15:35:59.357 に答える