专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > ASP

在线考试系统解决方法

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
在线考试系统
我想设计一个在线考试系统,一页显示10题,有上下翻页功能,现在的问题是翻到下一页后,如何保存上一页的答案?我的想法是能否实例化一个全部的dataset,每次翻页时都把答案保存在dataset中,但如何定义这个dataset呢?页面刷新时都会重新实例化类变量吧,这样的话dataset就无法保存了。希望大家给我一个有用的建议

------解决方案--------------------
最简单的办法就是使用ajax,只要焦点离开当前项目,直接保存。

下面的代码实测可用,一般我用在用户注册。

form要用post
<input type="text" id="字段名" name="字段值" onblur="SaveOOOO(this.value)" />

ajax:
我不了解这个东西,不过能用就是了。

JScript code

//Ajax Start
function 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 End


function 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>
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • ASP怎么隐藏表单

    ASP如何隐藏表单 <%if Cookies_Toy ="" then response.write "<a href='login.asp'>登录</a> <a href='reg.asp'>注册</a>" ...

  • 为何js调用css脚本后没效果

    为什么js调用css脚本后没效果 这个是css的脚本代码: body,ul,li{margin: 0; padding: 0; border: 0;} body {background: #f5f...

  • 怎么伪造post请求,求指点。

    如何伪造post请求,求指点。。。 要查询大批(也就几万个)运单的状态,那查询网站一次最多查24个,这一个个搞会搞死人的。。 有...

  • Asp.net_简略代码设置GridView自适应列宽不变形

    Asp.net_简单代码设置GridView自适应列宽不变形 动态绑定的GridView由于列数不固定,而列又太多(博主做的这个项目有150个左右的字段...

  • ASP.NET上实现AJAX注册提醒

    ASP.NET下实现AJAX注册提醒 Ajax全称是,主要是利用JavaScript实现异步的数据传输,首先说异步,异步是当前操作进行的时候,用...

  • aspnet_regiis装配出错:0x80070005 拒绝访问

    aspnet_regiis安装出错:0x80070005 拒绝访问 点击右边红色标题查看本文完整版:aspnet_regiis安装出错:0x80070005 拒绝访问安装...

  • 关于网站边框解决方法

    关于网站边框 像hao123这样的网站上的边框是着么弄的?背景图片吗?http://www.hao123.com 另外哪个素材网站有实用的这内素材 -----...

  • ! 多表分组查询统计

    求助!! 多表分组查询统计 高手们,帮帮忙! 用户表 D_user 为 ID Username GroupID 1 张三 2 2 李四 2 3 王五 ...

  • 在Paypal交付的同时,把表单的数据提交给数据库

    在Paypal提交的同时,把表单的数据提交给数据库 本帖最后由 liuyang2708 于 2012-11-20 23:14:54 编辑 在提交这个支付...

  • 虚拟目录上JavaScript不能正常执行

    虚拟目录下JavaScript不能正常执行 各位大侠好,我在同一台服务器上用两种方式部署同一个网站。 第一种方法:在IIS下直接建一个网站...

热门推荐: