一、Ajax所有过程事件分析
JQuery在执行Ajax的过程中会触发很多事件。
这些事件可以分为两种事件,一种是局部事件(Local),一种是全局事件(Global)。
局部事件:可以通过$.ajax来调用,你某一个Ajax请求不希望产生全局的事件,则可以设置global:false。
全局事件:跟click等事件类似,可以绑定到到每一个DOM元素上。
这些事件的按照事件的触发顺序如下介绍:
局部事件(Local)
全局事件(Global)
ajaxStart 全局事件
开始新的Ajax请求,并且此时没有其他ajax请求正在进行。
beforeSend 局部事件
当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。
ajaxSend 全局事件
请求开始前触发的全局事件。
success 局部事件
请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。
ajaxSuccess 全局事件
全局的请求成功。
error 局部事件
仅当发生错误时触发。你无法同时执行success和error两个回调函数。
ajaxError 全局事件
全局的发生错误时触发。
complete 局部事件
不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件。
ajaxComplete 全局事件
全局的请求完成时触发。
ajaxStop 全局事件
当没有Ajax正在进行中的时候,触发。
注:除了ajaxStart和ajaxStop之外,其他的事件都有3个参数
event, XMLHttpRequest, ajaxOptions
第一个是事件,第二个是XHR对象,第三个参数最有用,是当时调用这个ajax的时候的参数。
对于ajaxError,还有第四个参数thrownError,只有当异常发生时才会被传递。
二、Ajax所有过程事件示例
2.1、HTML代码
<div>
<input type="button" onclick="BtnSpareClick();" value="PartEvents" />
<input type="button" onclick="BtnGlobalClick();" value="GlobalEvents" />
</div>
<div id="Result">Result</div>
<div id="Process">Process</div>
2.2、Jquery Ajax脚本 局部事件(Local)实例 全局事件(Global)实例
<script language="javascript" type="text/javascript">
$.ready(function BtnSpareClick() {
$.ajax({
type: "get",
url: "https://www.jb51.net/windy2008/rss",
data: {},
global: false,
beforeSend: function(data, status, settings) {
$("#Process").text("Part请求开始前");
alert($("#Process").text());
},
success: function(data, status, settings) {
$("item", data).each(function(i, domEle) {
$("#Result").append("<div>" + $(domEle).children("title").text() + "</div>");
});
$("#Process").text("Part请求成功时");
alert($("#Process").text());
},
complete: function(data, status, settings) {
$("#Process").text("Part请求完成时");
alert($("#Process").text());
},
error: function(data, status, settings) {
$("#Process").text("Part请求错误时");
alert($("#Process").text());
}
});
});
</script>
<script language="javascript" type="text/javascript">
$.ready(function BtnGlobalClick() {
$.get("https://www.jb51.net/windy2008/rss", {}, function(data, status, settings)
{
$("item", data).each(function(i, domEle) {
$("#Result").append("<div>" + $(domEle).children("title").text() + "</div>");
});
});
$("#Process").ajaxStart(function() {
alert($(this).text());
$(this).text("开始新的Ajax请求");
});
$("#Process").ajaxStop(function() {
$(this).text("当没有Ajax正在进行中的时候");
alert($(this).text());
});
$("#Process").ajaxSend(function() {
$(this).text("请求开始前");
alert($(this).text());
});
$("#Process").ajaxSuccess(function() {
$(this).text("请求成功");
alert($(this).text());
});
$("#Process").ajaxComplete(function() {
$(this).text("请求完成时");
alert($(this).text());
});
$("#Process").ajaxError(function() {
$(this).text("请求错误时");
alert($(this).text());
});
});
</script>
Jquery,Ajax,过程事件
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。