在线考试系统我想设计一个在线考试系统,一页显示10题,有上下翻页功能,现在的问题是翻到下一页后,如何保存
在线考试系统
我想设计一个在线考试系统,一页显示10题,有上下翻页功能,现在的问题是翻到下一页后,如何保存上一页的答案?我的想法是能否实例化一个全部的dataset,每次翻页时都把答案保存在dataset中,但如何定义这个dataset呢?页面刷新时都会重新实例化类变量吧,这样的话dataset就无法保存了。希望大家给我一个有用的建议
[解决办法]
最简单的办法就是使用ajax,只要焦点离开当前项目,直接保存。
下面的代码实测可用,一般我用在用户注册。
form要用post
<input type="text" id="字段名" name="字段值" onblur="SaveOOOO(this.value)" />
ajax:
我不了解这个东西,不过能用就是了。
- JScript code
//Ajax Startfunction Ajax_GetXMLHttpRequest() { if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { return new XMLHttpRequest(); }}function Ajax_CallBack(FormName,ID,URL){ var x = Ajax_GetXMLHttpRequest(); var ID = document.getElementById(ID); x.open("POST",URL); x.setRequestHeader("REFERER", location.href); x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); x.onreadystatechange = function(){if(x.readyState == 4 && x.status == 200 && ID){ID.innerHTML=x.responseText;}} var encodedData="" if (document.forms.length > 0 && FormName) { var form = document.forms[FormName]; for (var i = 0; i < form.length; ++i) { var element = form.elements[i]; if (element.name) { var elementValue = null; if (element.nodeName == "INPUT") { var inputType = element.getAttribute("TYPE").toUpperCase(); if (inputType == "TEXT" || inputType == "PASSWORD" || inputType == "HIDDEN") { elementValue = escape(element.value); } else if (inputType == "CHECKBOX" || inputType == "RADIO") { if (element.checked) { elementValue = escape(element.value); } } } else if (element.nodeName == "SELECT" || element.nodeName == "TEXTAREA") { elementValue = escape(element.value); } if (elementValue) { if(encodedData==""){ encodedData = element.name + "=" + encodeURIComponent(elementValue); } else{ encodedData += "&" + element.name + "=" + encodeURIComponent(elementValue); } } } } } x.send(encodedData);}//Ajax Endfunction SaveOOOO(字段名) {Ajax_CallBack(false,"SaveOOOO","save.asp?字段名=" + escape(字段值));}
[解决办法]
参考:
- HTML code
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>在线考试系统—JS模拟翻页</title><script type="text/javascript">function doit(obj){ var ps=3; //总页数 var p=form1.page.value; if(obj=="back" && p>1){p--;} if(obj=="next" && p<ps){p++;} form1.page.value=p; var d=form1.document.getElementsByTagName("div"); for(var i=0;i<d.length;i++) { d[i].style.display="none"; if(i+1==p){d[i].style.display="block";} }}</script></head><body><form name="form1" method="post" action=""><div>第一题:你打死了它,流的却是你的血?(打一昆虫)<br />答:<input type="text" name="A1" /><p>第一页的其他题目...</p></div><div style="display:none;">第二题:你打死了它,流的却是你的血?(打一昆虫)<br />答:<input type="text" name="A2" /><p>第二页的其他题目...</p></div><div style="display:none;">第三题:你打死了它,流的却是你的血?(打一昆虫)<br />答:<input type="text" name="A3" /><p>第三页的其他题目...</p></div><input type="hidden" name="page" value="1" /><p><input type="button" value="上一页" onclick="doit('back')" /><input type="button" value="下一页" onclick="doit('next')" /></p></form></body></html>
[解决办法]
[解决办法]
www.ksxt414.cn .. 给你参考。、
可以提供源码给你。 1 年前做的。
[解决办法]
用session 或者cookies保存答案,保存成字符,或者保存成数据都行,等答题完以后在做处理就行了呗!
[解决办法]
我去年做了一个在线考试系统,是这样做的
当一个考生登入考试系统时,为他“生成一份试卷(包括题目号,是单选,还是多选,还是填空,还有初始化答案等)”,然后考试页面就调用刚才生成的席卷,当翻页时,更新这一页的数据到数据库中,当考生要重新到一页进行修改时,再从数据库中调出考生刚才答题的答案就可以了,就是说每在在翻页时,都更新当前页的答案到数据库中,最后,提交试卷时,就可以根据数据库中答题答案及标准答案对照来算出分数了,而且后来也可以来完全查看试卷答题情况
[解决办法]
可以使用临时表呀,或者用session存储吧!
[解决办法]
翻页的时候也是一个提交动作
后台记录当前的回答
至于后台记录方式 SQL CACHE SESSION 这个都随便了
