web端ajax传递foreach的所有的遍历数据

1. 对于 如何 在 Jsp页面 使用 ajax

                                    把所有的 foreach 数据 依次 传递 到 action页面的 技术

             最 常见的 就是  一张卷子  让你 做,。 你提交答案, 给 action 评分

            这是十分的 复杂的 技术 ,

 2. jsp 页面:  把 动态变化的 题目id  放在 foreach里面, 于是 每一行都会变化

         <form action="" method="post">
    <input type="text" name="papId" hidden="hidden" value="${paper.papId }">
<c:forEach var="test" items="${tests }" varStatus="idx"> 
<div  class="panel panel-default">


<div class="panel-heading">
${idx.index+1 }.&nbsp;${test.testTitle }(${test.score }分)    -----   这是 题目名称
</div>



<div class="panel-body" style="padding-top:0px;">
<span class="${test.testId }"></span>     每一个题目都会 在它 的前面显示


<script type="text/javascript">
var answer='${test.testName }'; 题目  的选项都是:     我,你,他  
var shu=new Array();                   所以  用 split(‘,’) 分成数组
shu=answer.split(",");  
for(var i=0;i<shu.length;i++){
var an=null;
if(i==0){an="A. "}                     加 ABCD  ---全单选
if(i==1){an="B. "}
if(i==2){an="C. "}
if(i==3){an="D. "}
if(i==4){an="E. "}
var name="."+'${test.testId }';                                                        给每一个 题目 加唯一标识 
var ans="<input type='radio' style='margin-left:20px;' name='"+'${test.testId }'+"' value='"+shu[i]+"'/>    "+an+shu[i]+"    ";
$(name).before(ans);
}
</script>
</div>
</div>
</c:forEach>
<input type="button" value="交卷"/>
</form>


然后 就是 ajax 代码

   

$("input[type='button']").click(function(){


var data=$("form").serializeArray();           把 form 表单 里面的 值 全部 转化为 
var url="exercise_giveScore";                   input里面的    name :padid    value : padname


alert(JSON.stringify(data));
$.ajax({
url:url,
data:data,
dataType:"json",
type:"POST",
success: function(msg){
alert(JSON.stringify(msg));
},
error:function(){
alert("提交出错,稍后再试");
}
});
});

});


5. 最重要的 就是 action里面 


 private String tallscore;

   

 msg.tallscore+"分,得努力了!"
public String giveScore(){

try {
//获取题目                                                                           这个 就是 input 在form里面 name=papId 的 value 

List<Test> tests=postTextbooksMapService.getTest(
this.getRequest().getParameter ("papId") );

//总分
tallscore=0;
for(Test t:tests){

if( this.testIsRingth(t)){    
                                                  答案对, 就加分
tallscore+=t.getScore();
}
}
System.out.println("--总分--"+tallscore);
}


 //判断题目对错
public boolean testIsRingth(Test t){
//获取学生答案
if(this.getRequest().getParameter(t.getTestId())==null){                      白卷  对 错
return false;
                              这里的 逻辑十分复杂, 就是把  整个卷子 里面的 题目 全部 拿出来, 而且 把 ajax 的Tid 对应的 value 刚好 是答案 
}else if(t.getAnswer().equals( this.getRequest().getParameter(t.getTestId()).trim())){
return true;//回答正确
}else{
String s=this.getRequest().getParameter(t.getTestId());
System.out.println("--我的答案--"+s);
return false;
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值