扩展jQuery的$ .post()函数

时间:2011-05-26 00:57:26

标签: javascript jquery oop

我一直在使用jQuery一段时间了,但我从来没有过于先进。

如何扩展$ .post()函数以向其添加我自己的功能?

我现在感兴趣的主要内容是一些$ .log()调用,所以我可以看到iPad上发生了什么,但我也对一些“加载”图标感兴趣,也许正在看一些缓存。

2 个答案:

答案 0 :(得分: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函数之间进行选择。它还确保了与插件,现有代码等的兼容性。

答案 1 :(得分:2)

对于加载图标,请查看.ajaxStart().ajaxStop()

要定义在$.post()之后采取的通用操作,您可能也不需要做任何花哨的事情。除了每个特定$.post()注册的处理程序之外,只需使用$.ajaxSetup()来定义成功/错误处理程序,以便在每个请求之后执行该日志记录。

此外,与在iPad上进行调试有关,请查看JSConsole。在您无法使用浏览器内调试工具(如移动开发)的设备上调试JavaScript非常有用。