使用ajax将javascript数组发送到jsp
所以,我正在做一个选择题输入页面,我想完全用ajax来处理它。我想灵活处理问题的选项数量。使用ajax将javascript数组发送到jsp,javascript,ajax,jsp,Javascript,Ajax,Jsp,所以,我正在做一个选择题输入页面,我想完全用ajax来处理它。我想灵活处理问题的选项数量。 以下是jquery部分: $("#QuestionModPageSubmitButton").click(function(){ var QuesDesc=$("#QuesDesc").val(); var Options=[]; var QuestionId=$("#QuestionId").attr("data-id"); var Correct
以下是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页面中的数组。当我试图读取选项数组的长度或通过提供索引来读取值时,会出现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)?" - ":" "));
}
它很好用。但我不想这样做,因为如果任何选项已经包含“-”,代码将崩溃
那么,如何做到这一点呢?您可以通过ajax发送多个值。从控制器端(对于spring框架),您只需将其保存在字符串中。数据将用逗号分隔的值绑定。为此,您需要一个来自javascript端的数组,我指的是您的jsp端 对于复选框,您可以使用:
var idVal = [];
var i = 0;
$('.case:checked').each(function() {
idVal[i] = $(this).val();
i++;
});
从控制器端,您可以获得以下值:
String[] id = req.getParameter("id_").split(",");
同样,您也可以对下拉菜单(选项)执行此操作。这在使用spring framework时适用。
谢谢。好的,经过几周的研究,我找到了一种将数组从js发送到jsp的方法。前面的代码只需要稍加修改。 这是需要修改的js部分。我只需要在数据部分的数组中添加括号
$.ajax({
type:"POST",
url:"ajax/ModifyQuestion.jsp",
data:{
Subject:SubjectId,
QID:QuestionId,
Question:QuesDesc,
Correct:CorrectOption,
"Options[]":Options
},
});
注意,我将选项写为“Options[]”。这使jsp理解所发送的变量是一个数组
现在,jsp页面实际上不需要太多修改
String[] Options=request.getParameterValues("Options[]");
任何进一步的操作都可以作为普通字符串执行
所以,是的,这对我很有效 嘿。。谢谢你的答复。。但是,正如我在问题的最后一部分所写,我真的不想这样使用它。拆分字符串的问题是,如果发送的字符串或数组中已经包含逗号(,),那么它也会对该字符串进行拆分。因此,我认为如果要发送包含逗号本身的值,则可以向该值添加任何特殊字符。比如说,如果你找到逗号(,),你可以替换它(#)或其他东西。要从控制器端获取实际值,必须用逗号替换(#)。这可能是一种方式。
$.ajax({
type:"POST",
url:"ajax/ModifyQuestion.jsp",
data:{
Subject:SubjectId,
QID:QuestionId,
Question:QuesDesc,
Correct:CorrectOption,
"Options[]":Options
},
});
String[] Options=request.getParameterValues("Options[]");