2011-05-26 81 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函数。它还确保与插件,现有代码等的兼容性。