首页 > 开发 > AJAX > 正文

基于Ajax技术实现考试倒计时并自动提交试卷

2024-09-01 08:27:55
字体:
来源:转载
供稿:网友

1.概述

在开发网络考试系统时,考试计时并自动提交试卷是必不可少的功能。由于在答卷过程中,试卷不能刷新,所以需要使用Ajax实现无刷新操作。运行本实例,访问准备考试页面index.jsp,在该页面中,单击“开始考试”按钮,将打开新窗口显示开始考试的页面,如图10.1所示,页面会自动计时,当考试时间结束时,将自动提价试卷。

2.技术要点

主要是利用Ajax异步提交技术和Servlet技术实现的。显示在考试页面中的计时时间是在Servlet中设置的,需要通过Ajax的异步提交不断的请求Servlet,从而获得服务器返回的最新的计时时间的数据。为了便于维护和代码的重用,可以将Ajax的请求方法封装到一个JS文件中,该方法可以作为一个公共方法,在程序中使用时可以直接调用。

3.具体实现代码

在JS文件中构建XMLHttpRequest对象以及请求方法,如下代码所示:

/*** 构建XMLHttpRequest对象并请求服务器* @param reqType:请求类型(GET或POST)* @param url:服务器地址* @param async:是否异步请求* @param resFun:响应的回调函数* @param parameter :请求参数* @return :XMLHttpRequest对象*/function httpRequest(reqType,url,async,resFun,parameter){ var request = null;if( window.XMLHttpRequest ){ //非IE浏览器,创建XMLHttpRequest对象request = new XMLHttpRequest();}else if( window.ActiveXObject ){ //IE浏览器,创建XMLHttpRequest对象var arrSignatures = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP", "Microsoft.XMLHTTP", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP"]; for( var i = 0; i < arrSignatures.length; i++ ){request = new ActiveXObject( arrSignatures[i] );if( request || typeof( request ) == "object" )break;}}if( request || typeof( request ) == "object" ){if(reqType.toLowerCase()=="post"){ //以POST方式提交request.open(reqType, url, true); //打开服务器连接//设置MIME类型request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");request.onreadystatechange = resFun; //设置处理响应的回调函数parameter = encodeURI(parameter); //将参数字符串进行编码request.send(parameter); //发送请求}else{ //以GET方式提交url = url+"?"+parameter; request.open(reqType, url, true); //打开服务器连接request.onreadystatechange = resFun; //响应回调函数request.send(null); //发送请求}}else{alert( "该浏览器不支持Ajax!" );} return request;} 

(1)新建index.jsp页,该页面是用户访问的初始页。在页面中主要包含一个“开始考试”按钮,该按钮的onclick事件将调用打开考试窗口的JavaScript函数,关键代码如下:

function showWindow(){ window.open('StartExam?action=startExam','','width=750,height=500,scrollbars=1');} 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表