代码之家  ›  专栏  ›  技术社区  ›  Arnaud F.

如何在$.Ajax(成功:…)之前启动$(elem).ajaxSuccess()?

  •  5
  • Arnaud F.  · 技术社区  · 14 年前

    我要做的是在进入 $.ajax({success}); 方法。我这样说:

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

    还有:

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

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

    问题与$.Ajaxerror()相同。

    谢谢

    1 回复  |  直到 13 年前
        1
  •  0
  •   Anatoly G    14 年前

    你可以使用 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.
       }
    });
    

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