2013-05-31 42 views
-5

我有Ajax請求:如何創建全局ajax成功處理程序?

$.post(url, function (result) { //some code }) 

結束,我需要全球的ajaxSuccess

$(document).ajaxSuccess(function (event, xhr, settings) { 
      var redirectTo = xhr.getResponseHeader('RedirectTo'); 
      if (redirectTo) { 
       window.location = redirectTo; 
       xhr.abort(); 
      } 
     }); 

現在,第一個電話是post。第二ajaxSuccess

我需要什麼的ajaxSuccess先打電話

實際: /* 控制檯結果

ajaxSend 
post 
ajaxSuccess 
*/ 

預期: /* 控制檯結果

ajaxSend 
ajaxSuccess 
post 
*/ 
+4

不知道你在問什麼。 – crush

+3

簡單dennis .. –

+0

xhr是首先被調用的ajax對象。 – crush

回答

1

我想你想要的東西的方法與ajaxSuccess()方法相反。它是ajaxSend() method

$(document).ajaxSend(function (event, xhr, settings) { 
    console.log("ajaxSend"); 
}); 

$(document).ajaxSuccess(function (event, xhr, settings) { 
    console.log("ajaxSuccess"); 
}); 

$.post(url, function (result) { 
    console.log("post"); 
}); 


/* 
console result 

ajaxSend 
post 
ajaxSuccess 
*/ 

補充:你可以這樣做,但我不建議後續代碼。只需選擇這個想法。

(function ($) { 
     $.post = function (url, data, callback, type) { 
      // shift arguments if data argument was omitted 
      if (jQuery.isFunction(data)) { 
       type = type || callback; 
       callback = data; 
       data = undefined; 
      } 

      return jQuery.ajax({ 
        url: url, 
        type: "POST", 
        dataType: type, 
        data: data, 
        success: function (success, statusText, jqXHR) { 
         jQuery.event.trigger("ajaxCallbackBefore", [jqXHR, success]); 
         callback(success, statusText, jqXHR); 
        } 
       }); 
     }; 
    })(jQuery); 

jQuery.fn.ajaxCallbackBefore = function (fn) { 
    return this.on("ajaxCallbackBefore", fn); 
}; 

$(function() { 
     $(document).ajaxCallbackBefore(function() { 
       console.log("ajaxCallbackBefore"); 
      }); 
     $(document).ajaxSend(function() { 
       console.log("ajaxSend"); 
      }); 
     $(document).ajaxSuccess(function() { 
       console.log("ajaxSuccess"); 
      }); 

     $.post(url, function (result) { 
       console.log("post"); 
      }); 
    }); 
+0

我有:1.ajaxSend 2. post 3.ajaxSuccess。 但我需要1.ajaxSend 2. ajaxSuccess 3.post – Mediator

+0

@simplydenis請檢查新的代碼。但我認爲你需要找到其他解決方案。 – Edward