我可以创建一个JavaScript,当调用任何get或post方法时触发,包括Ajax请求

Can I create a JavaScript that fires when any get or post method is called, including Ajax requests?

本文关键字:方法 post 请求 Ajax 包括 get 调用 创建 一个 我可以 JavaScript      更新时间:2023-09-26

任何时候我点击链接/按钮在我的网站上执行/调用GET或POST (Ajax和非Ajax)的任何地方,如果它需要更多的几秒钟,我想显示加载gif。我知道如何在个人的基础上做到这一点,但我想知道是否有可能创建一个函数,将自动做到这一点,然后隐藏完成后的gif(假设它不重定向到一个新的页面)。

我发现了这个,但这并不适用于spring安全的post方法。

这可能是一种不可能的情况,或者需要付出比它值得的更多的努力。我只是想知道是否有可能,如果有可能,如何处理。

唯一的约束是任何调用post或get的方法都不需要知道这个所谓的"监听器"

这是标记jQuery,所以我给出一个简单的jQuery答案。没有它也可以以相对简单的方式解决。

连接每个请求:

假设你的方法叫做myMethod

GET/POST请求可能通过以下方式触发:

  • 表单提交,可以选择表单$("#formID").submit(myMethod);。注意,如果myMethod返回false,它将导致表单不提交
  • AJAX在这种情况下,你可以使用$.ajaxStart$.ajaxStart(myMethod)
  • "a"标签点击,和其他点击处理程序,在这种情况下,你可以执行$("a[href]").click(myMethod),注意,这选择所有的a标签与href属性,你可能想改变选择器,以满足您的需要
  • Image负载,你可以像这个问题中解释的那样处理。
  • Script负载,你可以像这个问题中解释的那样检测。
  • Stylesheet/Link加载,这将在这篇博文中解释。你可以在CSS中添加一个隐藏元素,并检查样式是否在间隔内应用,当它调用myMethod

你不能做的事:

  • 如果你的页面有一个像Flash这样的插件,或者你的JavaScript没有访问的任何东西,你不能钩住它发出的请求。

显示'loading' gif的情况。

从你问的似乎你只关心图像请求,和AJAX请求(纠正我,如果我错了),因为外部页面需要很长时间加载不在AJAX请求可以(应该)实现.gif逻辑在新页面上。这可以像我上面解释的那样处理。

虽然你可以钩住每一个案例,但我不会这样做。我会创建一个方法,加载'loading' gif到一个地方,并接受一个url。如果该url是一个图像(例如,通过文件扩展名,如果这与您的映射ok)使用image load detect链接问题中的逻辑,如果它是AJAX加载加载gif到数据将被加载的地方,并将其替换为.done()处理程序上的数据。

这是一个关于如何为图像做这件事的问题,这是如何为AJAX做这件事。这两者可以很容易地组合成一个method,我相信你应该使用。