6.7 jQuery中的Ajax全局事件

6.7 jQuery中的Ajax全局事件

jQuery简化Ajax操作不仅体现在调用Ajax方法和处理响应方面,而且还体现在对调用Ajax方法的过程中的HTTP请求的控制。通过jQuery提供的一些自定义全局函数,能够为各种与Ajax相关的事件注册回调函数。例如当 Ajax 请求开始时,会触发 ajaxStart()方法的回调函数;当 Ajax请求结束时,会触发 ajaxStop()方法的回调函数。这些方法都是全局的方法,因此无论创建它们的代码位于何处,只要有Ajax请求发生时,就会触发它们。在前面例子中,远程读取Flickr.com网站的图片速度可能会比较慢,如果在加载的过程中,不给用户提供一些提示和反馈信息,很容易让用户误认为按钮单击无用,使用户对网站失去信心。

此时,就需要为网页添加一个提示信息,常用的提示信息是“加载中…”,代码如下:

[插图]

然后用CSS控制元素隐藏,当Ajax请求开始的时候,将此元素显示,用来提示用户Ajax请求正在进行。当Ajax请求结束后,将此元素隐藏。代码如下:

[插图]

这样一来,在 Ajax 请求过程中,只要图片还未加载完毕,就会一直显示“加载中…”的提示信息,看似很简单的一个改进,却将极大地改善用户的体验。效果如图6-13所示。

[插图]

图6-13 显示“加载中...”的提示信息

如果在此页面中的其他地方也使用 Ajax,该提示信息仍然有效,因为它是全局的。如图6-14所示。

[插图]

图6-14 demo2也使用同一个提示信息

jQuery的Ajax全局事件中还有几个方法,也可以在使用Ajax方法的过程中为其带来方便。如表6-4所示。

表6-4 另外几个方法

[插图]

注意:1,如果想使某个 Ajax 请求不受全局方法的影响,那么可以在使用$.ajax(options)方法时,将参数中的global设置为false,jQuery代码如下:[插图]

具体原因请查看:http://bugs.jquery.com/ticket/8338