2

The context is: I'm doing ajax calls all over the place for processing forms on my site but generally, they are doing the same sort of thing and showing similar feedback. So I planned to write a function that does validation and an ajax call and then bind that to all forms on my site (with a certain class).

Done that. Works well.

Except.. in those cases where I want to do something slightly different on success.

Is there an elegant way I can leave that function in place but override it on a form by form basis when I need? it's just the success handling I want to change.

4

4 に答える 4

4

はい。ajax 呼び出しにコールバックを提供します。成功ハンドラーで、このコールバックを呼び出します。

function newAjax(successCallback, errorCallback) {
  $.ajax({
    url: ...,
    success: successCallback(),
    error: errorCallback()
  });
}

また、両方のコールバックを指定しない場合にエラーが発生しないように、最初にコールバックの存在を確認することをお勧めします。もちろん、好きなように自由に拡張してください。

function newAjax(successCallback, errorCallback) {
  $.ajax({
    url: ...,
    success: function() { 
      if (typeof successCallback === "function") {
       successCallback()
      }
    },
    error: function() {
      if (typeof errorCallback === "function") {
       errorCallback()
      }
    }
  });
}
于 2013-08-11T06:51:38.413 に答える
0

ajaxSetup 関数も活用できると思います。これを使用して、ajax 呼び出しのデフォルト値を設定できます。その後、成功のコールバックのみを変更する必要があります。

http://api.jquery.com/jQuery.ajaxSetup/

于 2013-08-11T07:01:43.300 に答える