2011-05-26 85 views
0

我一直在使用jQuery一段時間,但我從來沒有得到太高級。

如何擴展$ .post()函數以添加自己的功能?

我現在有興趣添加的主要內容是一些$ .log()調用,所以我可以看到iPad上發生了什麼,但我也會對某些「加載」圖標感興趣,也可能在看一些緩存。

+0

我知道我不應該緩存帖子,我會繼承100KLOC內聯網,並且他們希望爲iPad優化它。重構所有後端代碼以查找GET而不是POST - 然後進行測試 - 不在我的時間限制內。 – 2011-05-26 01:02:53

回答

2

對於加載圖標,請查看.ajaxStart().ajaxStop()

要定義在任何$.post()之後採取的通用操作,您可能不需要做任何事情。只需使用$.ajaxSetup()即可定義成功/錯誤處理程序,以在每個請求之後執行日誌記錄,以及每個特定$.post()註冊的處理程序。

此外,有關在iPad上進行調試,請查看JSConsole。在您無法使用瀏覽器內調試工具(如移動開發)的設備上調試JavaScript時,它非常有幫助。

4

我用jQuery $ .ajax方法做了類似的事情。我jQuery對象上創建新的頂級方法:

$.extend({ myAjax: function(options) { 

    // code I want to run before the jQuery AJAX, 
    // I can access and alter the options passed in 

    var jqXHR = $.ajax(myAjax); 

    // code I want to run after the jQuery AJAX 
    // I can also run jQuery deferred code, e.g: jqXHR.done(function() { something }); 

}); 

您可以然後通過調用這個:

var options = { 
    url: "http://example.com", 
    type: "GET", 
    dataType: "JSONP" 
} 

$.myAjax(options); 

我在哪裏我的包裹圍繞jQuery的AJAX功能的附加功能。這使我可以選擇使用擴展函數還是回退到基本的jQuery函數。它還確保與插件,現有代碼等的兼容性。