在 Ajax
课程中,我们了解了最基本的异步处理方式。本章,我们将了解一下
Ajax
的
一些全局请求事件、跨域处理和其他一些问题。
一.加载请求
在
Ajax
异步发送请求时,遇到网速较慢的情况,就会出现请求时间较长的问题。而超
过一定时间的请求,用户就会变得不再耐烦而关闭页面。而如果在请求期间能给用户一些提
示,比如:正在努力加载中
...
,那么相同的请求时间会让用户体验更加的好一些。
jQuery
提供了两个全局事件,
.ajaxStart()
和
.ajaxStop()
。这两个全局事件,只要用户触发
了
Ajax
,请求开始时(未完成其他请求)激活
.ajaxStart()
,请求结束时(所有请求都结束了)
激活
.ajaxStop()
。
//请求加载提示的显示和隐藏
$('.loading').ajaxStart(function () {
$(this).show();
}).ajaxStop(function () {
$(this).hide();
});
注意:以上代码在
jQuery1.8
及以后的版本不在有效,需要使用
jquery-migrate
向下兼容
才能运行。新版本中,必须绑定在
document
元素上。
$(document).ajaxStart(function () {
$('.loading').show();
}).ajaxStop(function () {
$('.loading').hide();
});
//如果请求时间太长,可以设置超时
$.ajax({
timeout : 500
});
//如果某个 ajax 不想触发全局事件,可以设置取消
$.ajax({
global : false
});
二.错误处理
Ajax
异步提交时,不可能所有情况都是成功完成的,也有因为代码异步文件错误、网
络错误导致提交失败的。这时,我们应该把错误报告出来,提醒用户重新提交或提示开发者