jquery 执行Ajax的过程中触发的事件
2014-06-20 16:44
627 查看
一、Ajax所有过程事件分析
JQuery在执行Ajax的过程中会触发很多事件。
这些事件可以分为两种事件,一种是局部事件(Local),一种是全局事件(Global)。
局部事件:可以通过$.ajax来调用,你某一个Ajax请求不希望产生全局的事件,则可以设置global:false。
全局事件:跟click等事件类似,可以绑定到到每一个DOM元素上。
这些事件的按照事件的触发顺序如下介绍:
局部事件(Local)
beforeSend
局部事件
当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。
success
局部事件
请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。
error
局部事件
仅当发生错误时触发。你无法同时执行success和error两个回调函数。
complete
局部事件
不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件
全局事件(Global)
ajaxStart
全局事件
开始新的Ajax请求,并且此时没有其他ajax请求正在进行。
ajaxSend
全局事件
请求开始前触发的全局事件。
ajaxSuccess
全局事件
全局的请求成功。
ajaxError
全局事件
全局的发生错误时触发。
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)实例
<script language="javascript" type="text/javascript">
$.ready(function BtnSpareClick() {
$.ajax({
type: "get",
url: "http://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>
全局事件(Global)实例
<script language="javascript" type="text/javascript">
$.ready(function BtnGlobalClick() {
$.get("http://www.jb51.net/windy2008/rss", {}, function(data, status, settings)
{
$("item", data).each(function(i, dom
4000
Ele) {
$("#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的过程中会触发很多事件。
这些事件可以分为两种事件,一种是局部事件(Local),一种是全局事件(Global)。
局部事件:可以通过$.ajax来调用,你某一个Ajax请求不希望产生全局的事件,则可以设置global:false。
全局事件:跟click等事件类似,可以绑定到到每一个DOM元素上。
这些事件的按照事件的触发顺序如下介绍:
局部事件(Local)
beforeSend
局部事件
当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。
success
局部事件
请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。
error
局部事件
仅当发生错误时触发。你无法同时执行success和error两个回调函数。
complete
局部事件
不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件
全局事件(Global)
ajaxStart
全局事件
开始新的Ajax请求,并且此时没有其他ajax请求正在进行。
ajaxSend
全局事件
请求开始前触发的全局事件。
ajaxSuccess
全局事件
全局的请求成功。
ajaxError
全局事件
全局的发生错误时触发。
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)实例
<script language="javascript" type="text/javascript">
$.ready(function BtnSpareClick() {
$.ajax({
type: "get",
url: "http://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>
全局事件(Global)实例
<script language="javascript" type="text/javascript">
$.ready(function BtnGlobalClick() {
$.get("http://www.jb51.net/windy2008/rss", {}, function(data, status, settings)
{
$("item", data).each(function(i, dom
4000
Ele) {
$("#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——全局事件引用方式以及各个事件(全局/局部)执行顺序
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
- ajax的status为201依然触发jquery的error事件的问题
- AJAX触发aspnet控件的C#事件(基于Jquery)
- jquery $.ajax各个事件执行顺序
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- jquery中各个ajax事件执行顺序如下:
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- jquery之ajax——全局事件引用方式以及各个事件(全局/局部)执行顺序
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- Jquery双击事件不触发执行单击事件解决方法
- jquery实现触发、失去焦点操作并执行ajax操作
- Jquery双击事件不触发执行单击事件解决方法