Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改jQuery getJSON-在调用和回调时添加函数_Javascript_Jquery_Ajax_Getjson - Fatal编程技术网

Javascript 修改jQuery getJSON-在调用和回调时添加函数

Javascript 修改jQuery getJSON-在调用和回调时添加函数,javascript,jquery,ajax,getjson,Javascript,Jquery,Ajax,Getjson,我试图创建一个加载程序,跟踪AJAX调用start和end的时间。它使用的是JSONP,因此.ajaxComplete()无法工作/不可靠 理想情况下,我希望修改getJSON,以便每次调用它时,都会调用函数addAJAX()。回调还将触发函数removeAJAX() 目前,我必须通过向每个getJSON添加函数来实现这一点,其中有很多函数,可能还有更多函数 例如: // Add ajax tracker hl.addAJAX(); $.getJSON('someurl.com?callbac

我试图创建一个加载程序,跟踪AJAX调用start和end的时间。它使用的是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?

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


从技术上讲,这当然是可以做到的——jQuery只是JavaScript,因此您可以挖掘源代码
.js
文件,找到有问题的方法,并根据自己的内心内容进行修改。然而,这肯定不是一个微不足道的编辑,我强烈建议您不要修改第三方库的核心功能,除非您认为没有其他可行的选项,并且您已经准备好了随之而来的内容

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


尽管每次在回调中调用函数可能会很烦人,但这是实现此类功能的推荐方法。

感谢您的回复-是的,我不想修改库本身,因为我无法支持后续版本升级工作。我想知道是否存在钩子或类似jQuery.fn.extend()的东西,用于以安全的方式修改现有函数;我想这就是我要找的,谢谢。我想覆盖而不是修改;我在这里找到了一个getJSON示例。本教程帮助我完成了我所需要的工作—monkey补丁或重写函数: