jQuery 知识量:7 - 32 - 105
观察员函数指的就是在AJAX应用过程中,起监视监听作用的函数,它们可以在适当的时机进行某种干预或采取某种动作,用以增强AJAX应用的功能。所有观察员函数都是全局性的,因此不论在什么地方调用,它们都可以起作用。
jQuery中常用的观察员函数有.ajaxStart()和.ajaxStop()。
.ajaxStart():当AJAX应用启动后,在请求已经开始开始,并且还没有进行任何数据传输时,就会触发.ajaxStart()的回调函数。
.ajaxStop():当最后一次请求终止时,就会执行通过.ajaxStop()注册的回调函数。
HTML代码如下:
<p>one</p> <a href="#">start</a>
对应的JavaScript代码如下:
$(document).ready(function () { var showStatus = $('<p>working...</p>'); $(document).ajaxStart(function () { showStatus.insertBefore('p').hide().slideDown(1000); }).ajaxStop(function () { showStatus.slideUp(1000); }); $('a').click(function () { var setMessage = {content: $('p').text()}; $.post("deal.php", setMessage, function (data) { $(data).insertAfter('a').hide().fadeIn(3000); }); return false; }); });
这里使用PHP技术作为服务器端处理程序(deal.php):
$content = $_POST['content']; if (!empty($content)) { sleep(3); echo "<p>hello $content!</p>"; }
以上代码中:
HTML部分设置了一个字段和一个链接,当链接被点击后,就会向服务器发送字段内容,服务器会返还数据,并在链接下方显示返还的内容。
JavaScript部分首先定义了一个待显示的字段内容“showStatus ”(AJAX状态显示器),当AJAX启动和运行过程中会显示该字段,AJAX请求结束后会隐藏该字段。
随后设置观察员函数.ajaxStart()和.ajaxStop(),当AJAX启动时,将showStatus ”插入字段p的前部,先隐藏,后以滑下的动画效果显示出来。当AJAX结束时,将showStatus ”以滑上的动画效果隐藏起来。
最后设置链接的单击事件,当链接被点击后,取得字段内容并作为参数传递给PHP处理程序,通过$.post()函数完成AJAX应用,返回的数据插入到链接的后面,以淡入的动画效果显示出来。
PHP部分就是一个接收和打印传递信息的程序,其中,通过sleep()函数让程序等待3秒后执行下一步,目的是模拟大数据处理时的等待情况,凸显AJAX状态显示器的作用。
上面是一个简单的AJAX状态显示器,主要的作用就是反馈当前服务器处理请求的状态情况。
当JavaScript出错时,默认是没有任何提示的,它只是默默的停止运行,jQuery也不例外。要想获得某种提示,就需要错误处理机制。
在jQuery中可以使用观察员函数.ajaxError()进行错误处理,使用方式跟.ajaxStart()和.ajaxStop()类似。也可以给.load()之外的Ajax方法连缀.fail()方法,并通过它添加相应的回调函数(用于处理具体错误)。
还是以观察员函数的例子为例,这里修改一下JavaScript部分:
$(document).ready(function () { var showStatus = $('<p>working...</p>'); $(document).ajaxStart(function () { showStatus.insertBefore('p').hide().slideDown(1000); }).ajaxStop(function () { showStatus.slideUp(1000).queue(function (next) { $(this).remove(); next(); }); }); $('a').click(function () { var setMessage = {content: $('p').text()}; $.post("dealError.php", setMessage, function (data) { $(data).insertAfter('a').hide().fadeIn(3000); }).fail(function () { $('<p>没有找到文件!</p>').insertAfter('a'); }); return false; }); });
以上代码中,首先修改$.post()函数的URL地址为一个不存在的错误地址,然后在$.post()函数后面连缀了一个.fail()函数,其回调函数设置为,当发生错误时,建立一个错误提示字段,并插入到链接后面。运行后如下所示:
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6