我一直在使用jQuery一段時間,但我從來沒有得到太高級。
如何擴展$ .post()函數以添加自己的功能?
我現在有興趣添加的主要內容是一些$ .log()調用,所以我可以看到iPad上發生了什麼,但我也會對某些「加載」圖標感興趣,也可能在看一些緩存。
我一直在使用jQuery一段時間,但我從來沒有得到太高級。
如何擴展$ .post()函數以添加自己的功能?
我現在有興趣添加的主要內容是一些$ .log()調用,所以我可以看到iPad上發生了什麼,但我也會對某些「加載」圖標感興趣,也可能在看一些緩存。
對於加載圖標,請查看.ajaxStart()和.ajaxStop()。
要定義在任何$.post()
之後採取的通用操作,您可能不需要做任何事情。只需使用$.ajaxSetup()即可定義成功/錯誤處理程序,以在每個請求之後執行日誌記錄,以及每個特定$.post()
註冊的處理程序。
此外,有關在iPad上進行調試,請查看JSConsole。在您無法使用瀏覽器內調試工具(如移動開發)的設備上調試JavaScript時,它非常有幫助。
我用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函數。它還確保與插件,現有代碼等的兼容性。
我知道我不應該緩存帖子,我會繼承100KLOC內聯網,並且他們希望爲iPad優化它。重構所有後端代碼以查找GET而不是POST - 然後進行測試 - 不在我的時間限制內。 – 2011-05-26 01:02:53