如何在$ .ajax({success:...})之前启动$(elem).ajaxSuccess();?

时间:2010-10-19 05:26:44

标签: jquery

我要做的是在进入$.ajax({success});方法之前自动启动一个函数。我是这样的:

$("body").ajaxSuccess(
    function(event, XMLHttpRequest, ajaxOptions) {
        alert("ajaxSuccess");
    }
);

和:

$.ajax({
    url: ".",
    success: function() {
        alert("success");
    }
);

我的问题是,我首先看到“成功”,然后是“ajaxSuccess”,或者反过来。可能吗?还有其他解决办法吗?

问题与$ .ajaxError()...

相同

由于

1 个答案:

答案 0 :(得分:0)

您可以使用following

dataFilter(data, type)

在第一次从服务器返回时拦截请求。这不是你想要用它的原因,但它是一个普遍的成功前例程。

预错误?也许全局错误处理程序对你有用吗?

var obj = {
   someHandler: function(data, xmlObj, status) {},
   someHandler2: function(data, xmlObj, status) {},
   someErrorHandler: function(xmlObj, status, error) {},
   someErrorHandler2: function(xmlObj, status, error) {}
}

jQuery.ajax({
   success:function(data, xmlObj, status) {
      // decide based on data what the run 2nd
      if (data.success) {
         obj.someHandler(data, xmlObj, status);
      }
      else {
         obj.someHandler2(data, xmlObj, status);
      }
   },
   error: function(xmlObj, status, error) {
      // decide based on data what to run 2nd
      //same as above.
   }
});

我在我的一个项目中做了类似的事情。我有一个全局的Error对象,我根据从服务器返回的错误类型执行错误处理程序。我发现这是一种简单快捷的方法来为AJAX创建良好的错误处理