html5前端考试题ajax请求接口动态获取题库

html代码如下:

<!doctype html>
<html class="no-js">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="description" content="">
  <meta name="keywords" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <title></title>
  <style media="screen" type="text/css">
           input[type=radio] {
    -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.07);
    box-shadow: inset 0 1px 2px rgba(0,0,0,.07);
    background-color: #fff;
    color: #333;
    outline: 0;
    -webkit-transition: .05s border-color ease-in-out;
    transition: .05s border-color ease-in-out
  }


  input[type=radio]:focus {
    border-color: #5b9dd9;
    -webkit-box-shadow: 0 0 2px rgba(30,140,190,.8);
    box-shadow: 0 0 2px rgba(30,140,190,.8)
  }


  input[type=radio] {
    border: 1px solid #bbb;
    background: #fff;
    color: #555;
    clear: none;
    cursor: pointer;
    display: inline-block;
    line-height: 0;
    height: 20px;
    margin: 15px 15px 0 0;
    outline: 0;
    padding: 0!important;
    text-align: center;
    vertical-align: middle;
    width: 20px;
    min-width: 20px;
    -webkit-appearance: none;
    -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
    box-shadow: inset 0 1px 2px rgba(0,0,0,.1);
    -webkit-transition: .05s border-color ease-in-out;
    transition: .05s border-color ease-in-out
  }


  input[type=radio] {
    -webkit-border-radius: 50%;
    border-radius: 50%;
    margin-right: 4px;
    line-height: 10px
  }


  input[type=radio]:checked:before {
    float: left;
    display: inline-block;
    vertical-align: middle;
    width: 20px;
    font: 400 21px/1 dashicons;
    speak: none;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale
  }


  input[type=radio]:checked:before {
    content: '\2022';
    text-indent: -9999px;
    -webkit-border-radius: 50px;
    border-radius: 50px;
    font-size: 26px;
    width: 6px;
    height: 6px;
    margin: 6px;
    line-height: 20px;
    background-color: #1e8cbe
  }
  </style>




  <!-- Set render engine for 360 browser -->
  <meta name="renderer" content="webkit">


  <!-- No Baidu Siteapp-->
  <meta http-equiv="Cache-Control" content="no-siteapp"/>


  <!-- <link rel="icon" type="image/png" href="assets/i/favicon.png"> -->


  <!-- Add to homescreen for Chrome on Android -->
  <meta name="mobile-web-app-capable" content="yes">
  <!-- <link rel="icon" sizes="192x192" href="assets/i/app-icon72x72@2x.png"> -->


  <!-- Add to homescreen for Safari on iOS -->
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-title" content=""/>
  <!-- <link rel="apple-touch-icon-precomposed" href="assets/i/app-icon72x72@2x.png"> -->


  <!-- Tile icon for Win8 (144x144 + tile color) -->
 <!--  <meta name="msapplication-TileImage" content="assets/i/app-icon72x72@2x.png"> -->
  <meta name="msapplication-TileColor" content="#0e90d2">


  <link rel="stylesheet" href="assets/css/amazeui.min.css">
  <link rel="stylesheet" href="assets/css/app.css">
</head>
<body>
 <header data-am-widget="header"
          class="am-header am-header-default">
      <div class="am-header-left am-header-nav">
          <a href="#left-link" class="" id="m-return">


              <img class="am-header-icon-custom" src="data:image/svg+xml;charset&#x3D;utf-8,&lt;svg xmlns&#x3D;&quot;http://www.w3.org/2000/svg&quot; viewBox&#x3D;&quot;0 0 12 20&quot;&gt;&lt;path d&#x3D;&quot;M10,0l2,2l-8,8l8,8l-2,2L0,10L10,0z&quot; fill&#x3D;&quot;%23fff&quot;/&gt;&lt;/svg&gt;" alt=""/>
          </a>
      </div>


      <h1 class="am-header-title">
          
      </h1>
  </header>


  <div class="am-container">
      <div class="am-exam-title">
          <span class="am-exam-title-number" id="am-number">1</span>/<span id="title_number"></span>
          <span class="am-exam-title-subject"><h3>选择题</h3></span>
           <span style="float: right;margin-top: 1rem;margin-right: 1rem;"><button type="button" id="btn3" class="am-btn am-btn-secondary">交卷</button></span>             
      </div>
  </div>
  <b><hr style="background-color: gray;border: none;height: 1px;" ></b>
  
  <div class="am-container">
      <div class="am-exam-question" id="am-exam-question">
      </div>
      <div class="am-exam-option" id="am-exam-option">
          <div class="am-form-group">
            <form action="" method="post">
                <div id="am-answers" class="am-answers">


                </div>
            </form>  
          </div>
      </div>
  </div>


  <div class="am-navbar am-navbar-default" data-am-widget="navbar">  
      <button type="button" id="btn1" class="am-btn am-btn-warning" style="float:left;height: 48px;width: 50%;">上一题</button>
      <button type="button" id="btn2" class="am-btn am-btn-secondary " style="float:right;height: 48px;width: 50%;">下一题</button>
  </div>  


  


<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>  

<script src="assets/layer/layer.js"></script>


javascript代码实现如下:

<script type="text/javascript">
     $('#m-return').on('click', function() {
         window.history.back();
         return false;  
    });    


    var formid = '';
    var questionid = '';
    var question = '';
    var answerid = '';
    var studentid = '';
    var _answers;
    $(function(){
        //判断是否登录状态
        var str = localStorage.getItem("strName");
        if(!str){
            layer.alert('请您先进行登录,登录成功后再进行考试!', {icon: 6,closeBtn: 0,},function(){
                    window.location.href = "login.html";
            });
        }


        //获取地址栏id参数
        function getUrlParam(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
            var r = window.location.search.substr(1).match(reg);  //匹配目标参数
            if (r != null) return unescape(r[2]); return null; //返回参数值
        }
        id = getUrlParam('id');
        phone = localStorage.getItem("strName");


        //开始考试
        $.ajax({
              type : "get",
              url : "http://192.168.168.136:80/chapter2/startExam?typeid="+id+"&phone="+phone,         
              dataType : "jsonp",
              jsonp: "callback",
              success : function(data){
                  formid = data.content.form_id;
                 
                  //console.log(data);
                  var title_number = data.content.title_number;
                  var verified_status = data.content.verified_status;
                  if(verified_status == 0)
                  {


                      layer.alert('您未通过实名认证不能答题!', {icon: 6,closeBtn: 0,},function(){
                          window.location.href = "examlist.html";
                      });


                  }
                  $("#title_number").html(title_number);
                  var number = parseInt($('#am-number').text());
                  if(number == 1)
                  {
                      $('#btn1').attr("disabled","disabled");
                  }
                  else
                  {
                      $('#btn1').removeAttr("disabled");
                  }
                  exam();
                     
              }
        });
         
    });


    //获取考题
    function exam()
    {
         $.ajax({
              type : "get",
              url : "http://192.168.168.136:80/chapter2/question?formId="+formid+"&type=next"+"&phone="+phone,         
              dataType : "jsonp",
              jsonp: "callback",
              success : function(data){
                  if(data.status == 1)
                  {
                      var str = data;
                      var answers = '';
                      var questionData = str.content.question;
                      //console.log(str);
                      var questiontitle = questionData.question;
                      
                      for(var i=0;i<questionData.answers.length;i++)
                      {
                          answers += "<label>"+"<input name='r' type='radio' value="+i+">"+"<span class='am-check-content'>"+questionData.answers[i]+"</span>"+"</label>"+"<br/>";
                      }
                      $("#am-answers").html(answers);
                      $('#am-exam-question').html(questiontitle);
                      questionid = questionData.question_id;
                      answerid = questionData.answer_id;
                      studentid = questionData.student_id;
                      _answers = questionData.answers;
                  }          
                   
              }
        });
    }


    //获取上一题按钮事件
    $('#btn1').click(function(){
        var number = parseInt($('#am-number').text());
        var titleNumber = parseInt($('#title_number').text());
        number--;
        $('#am-number').text(number);
        if(number == 1)
        {
            $('#btn1').attr("disabled","disabled");
        }


        $.ajax({
              type : "get",
              url : "http://192.168.168.136:80/chapter2/question?formId="+formid+"&type=pre"+"&phone="+phone,         
              dataType : "jsonp",
              jsonp: "callback",
              success : function(data){
                  if(data.status == 1)
                  {
                      var str = data;
                      var answers = '';
                      var questionData = str.content.question; 
                      //console.log(str);


                      var question = questionData.question;
                      for(var i=0;i<questionData.answers.length;i++)
                      {


                          if(questionData.answer_id == i){
                            answers += "<label>"+"<input name='r' type='radio' value="+i+" checked>"+"<span>"+questionData.answers[i]+"</span>"+"</label>"+"<br/>";
                          }else{
                            answers += "<label>"+"<input name='r' type='radio' value="+i+">"+"<span>"+questionData.answers[i]+"</span>"+"</label>"+"<br/>";
                          }
                      }
                      $("#am-answers").html(answers);
                      $('#am-exam-question').html(question); 
                      if(number < titleNumber)
                      {
                          $('#btn2').removeAttr("disabled");
                      }   
                  }       
                    
              }
        });
    });




    //获取下一题按钮事件
    $('#btn2').click(function(){
        var answerid = $("input[name='r']:checked").val();
        var answer = _answers[answerid];


        //提交答案
        $.ajax({
              type : "get",
              url : "http://192.168.168.136:80/chapter2/answers?questionId="+questionid+"&formId="+formid+"&studentId="+studentid+"&answer="+answer+"&answerId="+answerid+"&phone="+phone,         
              dataType : "jsonp",
              jsonp: "callback",
              success : function(data){
                    var str = data;
                    //console.log(str);
                    examStart();
                    
              }
        });


        


    })


    //获取下一题
    function examStart()
    {
        $.ajax({
              type : "get",
              url : "http://192.168.168.136:80/chapter2/question?formId="+formid+"&type=next"+"&phone="+phone,         
              dataType : "jsonp",
              jsonp: "callback",
              success : function(data){
                    //console.log(data);
                    if(data.status == 1)
                    {
                        var str = data;
                        var answers = '';


                        var questionData = str.content.question;
                        var questiontitle = questionData.question;
                        _answers = questionData.answers;
                        for(var i=0;i<questionData.answers.length;i++)
                        {
                            answers += "<label>"+"<input name='r' type='radio' value="+i+">"+"<span>"+questionData.answers[i]+"</span>"+"</label>"+"<br/>";
                        }
                        $("#am-answers").html(answers);
                        $('#am-exam-question').html(questiontitle);
                        questionid = questionData.question_id;
                        studentid = questionData.student_id;
                        var number = parseInt($('#am-number').text());
                        var titleNumber = parseInt($('#title_number').text());
                        number++;
                        $('#am-number').text(number);
                        if(number > 1)
                        {
                            $('#btn1').removeAttr("disabled");
                        }
                        if(number === titleNumber)
                        {
                            $('#btn2').attr("disabled","disabled");
                        }
                    }
                   
                    
              }
        });
    }


      //交卷按钮事件
      $('#btn3').click(function(){
          layer.confirm('您确定要交卷吗?', {
              btn : [ '确定', '取消' ],//按钮
              icon: 6
          }, function(index) {
              layer.close(index);
              submitExam();
              
          }); 
      })




      //交卷方法
      function submitExam(){
           $.ajax({
              type : "get",
              url : "http://192.168.168.136:80/chapter2/submitExam?studentId="+studentid+"&phone="+phone,         
              dataType : "jsonp",
              jsonp: "callback",
              success : function(data){
                    var str = data;
                    layer.alert('本次考试为'+str.content.score+'分,请下载食安快线APP查看考试记录!', {icon: 6,closeBtn: 0,},function(){
                        window.location.href = 'examlist.html';
                    });      
                         
              }
          });
      }
        
    

  </script>

考试登录页面效果:



考试页面效果如下:


  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值