我可以创建一个JavaScript,当调用任何get或post方法时触发,包括Ajax请求
Can I create a JavaScript that fires when any get or post method is called, including Ajax requests?
任何时候我点击链接/按钮在我的网站上执行/调用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
,我相信你应该使用。
- 如何使用post方法从方法上传文件
- AJAX不会在文件上传后重定向到网页-POST方法
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 使用Ajax的问题's发送多个值的Post方法
- 使用javascript ajax post方法的未定义偏移PHP错误
- 如何使用get或post方法连接和执行ajax
- jQuery/Ajax-试图通过Ajax创建POST方法并获得对HTML的响应
- 如何在不更改URL的情况下使用HTTP方法POST
- HTTP 状态 405 - 不支持请求方法“POST”(Spring MVC)
- 对象 #<传入消息> 没有方法“post”
- Jquery Ajax 方法 POST 在远程服务器上不起作用
- 方法POST,状态(已取消)错误消息
- 方法POST在向REST服务发送请求时不起作用
- 如何修复这个js脚本发送一个值的方法post
- 表单方法post和jquery
- 当我想用方法post(javascript)重定向到动作时,控制器方法不重定向并返回到上一页,为什么
- 如何获取POST方法“$.POST()”的结果
- 如何通过Jquery中的方法post传递数组和参数
- 覆盖jQuery方法$.POST
- Extjs4:使用方法 POST 的树存储