因此,我正在处理多个选择问题的入口页,我想用ajax完全处理它。我想用问题的选项数量来灵活处理。
这里的jQuery的一部分:使用ajax发送javascript数组到jsp
$("#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页面“ModifyQueston.jsp”。
这里的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页面。
我试图通过用' - '分隔每个值将数组转换为单个字符串,然后使用getParameter()函数读取它,然后使用split()函数将它分离回数组。
脚本:
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("-");
它工作正常。但我不想这样做,因为如果任何选项已经包含' - ',代码将会崩溃。
那么,如何做到这一点?
嘿..感谢您的答复.. 但是,正如我在问题的最后一部分写道,我真的不希望使用这种方式。分割字符串的问题是,如果发送的字符串或数组中已经包含逗号(,),那么它也会将字符串与它分开。 –
所以我认为如果你想发送一些包含逗号的值,那么你可以添加任何特殊的字符到该值。比如说如果你找到了逗号(,),你可以替换它(#)或其他东西。为了从控制器端获得真正的价值,你必须用逗号代替(#)它。这可能是一种方式。 –