【问题标题】:Modify jQuery getJSON - add functions on call and callback修改 jQuery getJSON - 在调用和回调时添加函数
【发布时间】:2014-05-29 19:17:32
【问题描述】:

我正在尝试创建一个加载程序来跟踪 AJAX 调用何时开始和结束。它使用 JSONP,因此 .ajaxComplete() 不起作用/不可靠。

理想情况下,我想修改 getJSON,以便每次调用它时都会调用一个函数 addAJAX()。回调还将触发函数 removeAJAX()。

目前我不得不通过向每个 getJSON 添加函数来做到这一点,其中有很多并且可能更多。

例如:

// Add ajax tracker
hl.addAJAX();

$.getJSON('someurl.com?callback=?',{ key: APIKEY }, function(json) {    
  // Remove the ajax tracker
  hl.removeAJAX();
});

为 AJAX 调用创建包装函数是一种选择,但我真的很想知道 jQuery 是否可以这样修改?

【问题讨论】:

标签: javascript jquery ajax getjson


【解决方案1】:

是的,您可以覆盖 jQuery 来执行此类操作。我已经为类似类型的问题发布了一个答案。因此,与其重新发布,不如提供参考 -

How to get default error of ajax call

【讨论】:

  • 函数覆盖;我想这就是我正在寻找的,谢谢。
【解决方案2】:

从技术上讲,它当然可以做到——jQuery 只是 JavaScript,因此您可以挖掘源代码 .js 文件,找到有问题的方法并根据您的需要进行修改。但是,这当然不是一个简单的编辑,我强烈建议您不要修改第三方库的核心功能,除非您认为没有其他可行的选择并且您已准备好迎接随之而来的事情。

我之所以这么说,是因为这意味着,除其他外,当您尝试迁移到未来版本时,您必须维护这些更改,并且您可能会中断对其他需要某些功能的库或插件的支持以某些方式工作。

虽然每次都在回调中调用函数可能很烦人,但这是完成此类功能的推荐方式。

【讨论】:

  • 感谢您的回复——是的,我不想修改库本身,因为我无法支持后续的版本升级工作。我想知道是否存在用于以安全方式修改现有函数的钩子或类似 jQuery.fn.extend() 的东西。
猜你喜欢
  • 2011-12-15
  • 2014-04-06
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 1970-01-01
  • 2010-11-16
相关资源
最近更新 更多