Jquery 编写能够覆盖成功处理的常规$.ajax()函数

Jquery 编写能够覆盖成功处理的常规$.ajax()函数,jquery,Jquery,上下文是:我在我的网站上到处做ajax调用来处理表单,但通常来说,他们做同样的事情,并显示类似的反馈。因此,我计划编写一个函数来进行验证和ajax调用,然后将其绑定到我站点上的所有表单(使用特定类) 那样做了。效果很好 除了。。在这种情况下,我想做一些与成功略有不同的事情 是否有一种优雅的方法可以让该函数保留在适当的位置,但在需要时逐个表单重写它?这只是我想要改变的成功处理方式。是的。为ajax调用提供回调。在成功处理程序中,调用此回调 function newAjax(successCallb

上下文是:我在我的网站上到处做ajax调用来处理表单,但通常来说,他们做同样的事情,并显示类似的反馈。因此,我计划编写一个函数来进行验证和ajax调用,然后将其绑定到我站点上的所有表单(使用特定类)

那样做了。效果很好

除了。。在这种情况下,我想做一些与成功略有不同的事情


是否有一种优雅的方法可以让该函数保留在适当的位置,但在需要时逐个表单重写它?这只是我想要改变的成功处理方式。

是的。为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()
      }
    }
  });
}
您可以使用处理程序

描述:附加一个在Ajax请求成功完成时执行的函数

本文档还提供了如何区分请求的示例:

$( document ).ajaxSuccess(function( event, xhr, settings ) {
  if ( settings.url == "ajax/test.html" ) {
    $( ".log" ).text( "Triggered ajaxSuccess handler. The ajax response was: " +
      xhr.responseText );
  }
});

我认为您也可以利用ajaxSetup功能。您可以使用它为ajax调用设置默认值,然后只需更改成功回调


我能想到的最简单的解决方案是:

在form元素的属性中为窗体指定自定义回调函数。 现在从公共回调函数检查是否为当前表单指定了特定回调。如果是,则将响应作为参数调用它

<form class="ajax-form" action="some/path" data-submit-callback="loginFormCallback">
</form>
//登录表单的特殊回调

function loginFormCallback(response){
    //do something special for login form here.
}

你救了我的时间,伙计。谢谢:)覆盖ajax调用中的“数据”值怎么样?
function loginFormCallback(response){
    //do something special for login form here.
}