所以,我正在处理MULTIPLE CHOICE QUESTION条目页面,我想用ajax完全处理它。我想对问题的选项数量保持灵活性 这是jquery部分:
$("#QuestionModPageSubmitButton").click(function(){
var QuesDesc=$("#QuesDesc").val();
var Options=[];
var QuestionId=$("#QuestionId").attr("data-id");
var CorrectOption=$('input[type="radio"]:checked').val();
var TotalOptions=$("#TotalOptions").attr("data-total");
var SubjectId=$("#SubjectId").attr("data-id");
for(var i=0;i<TotalOptions;i++)
{
Options.push($("#Option"+i).val());
}
$.ajax({
type:"POST",
url:"ajax/ModifyQuestion.jsp",
data:{
Subject:SubjectId,
QID:QuestionId,
Question:QuesDesc,
OptionValues:Options,
Correct:CorrectOption,
TotalOptions:TotalOptions},
});
});
我想将选项数组发送到jsp页面&#34; ModifyQueston.jsp&#34;。
这是我用来读取发送数据的jsp代码:
int SubjectId=Integer.parseInt(request.getParameter("Subject"));
int QuestionId=Integer.parseInt(request.getParameter("QID"));
String Question=request.getParameter("Question");
String[] Options=request.getParameterValues("OptionValues");
int CorrectOption=Integer.parseInt(request.getParameter("Correct"));
int TotalOptions=Integer.parseInt(request.getParameter("TotalOptions"));
但是使用这些代码我无法在jsp页面中读取数组。当我尝试读取Options数组的长度或者当我尝试通过提供索引来读取值时,我得到NullPointerException。
我想将数据发送到jsp的脚本部分很好。所以问题是如何将它放入jsp页面
我尝试通过将每个值与&#39; - &#39;分隔开来将数组转换为单个字符串。然后使用getParameter()函数读取它,然后使用split()函数将其分离回Array。
脚本:
var OptionsString="";
for(var i=0;i<TotalOptions;i++)
{
Options.push($("#Option"+i).val());
OptionsString+=(Options[i]+((i<TotalOptions-1)?" - ":" "));
}
JSP:
String[] Options=(request.getParameter("OptionValues")).split("-");
工作正常。但我不想这样做,因为如果任何选项已包含&#39; - &#39;守则会崩溃。
那么,如何完成这项工作?
答案 0 :(得分:0)
您可以通过ajax发送多个值。从控制器端(对于spring框架),您只需将其保存在字符串中即可。数据将以逗号分隔的值绑定。要做到这一点,你需要一个javascript结束的数组,我的意思是你的jsp方面。
对于您可以使用的复选框:
var idVal = [];
var i = 0;
$('.case:checked').each(function() {
idVal[i] = $(this).val();
i++;
});
从控制器端,您可以获得值:
String[] id = req.getParameter("id_").split(",");
同样的方法可以用来下拉(选项)。
这在使用弹簧框架时适用于我。
感谢。
答案 1 :(得分:0)
好的,经过几周的研究后,我发现了一种将数组从js发送到jsp的方法。以前的代码只需要稍加修改即可。 这是需要修改的js部分。我只需要在数据部分中添加数组中的括号。
$.ajax({
type:"POST",
url:"ajax/ModifyQuestion.jsp",
data:{
Subject:SubjectId,
QID:QuestionId,
Question:QuesDesc,
Correct:CorrectOption,
"Options[]":Options
},
});
请注意,我将选项编写为“选项[]”。这使得jsp理解发送的变量是一个数组。
现在,jsp页面并不需要太多修改。
String[] Options=request.getParameterValues("Options[]");
任何进一步的操作都可以作为普通字符串执行。
所以,是的,这对我有用!..