因此,我正在處理多個選擇問題的入口頁,我想用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("-");
它工作正常。但我不想這樣做,因爲如果任何選項已經包含' - ',代碼將會崩潰。
那麼,如何做到這一點?
嘿..感謝您的答覆.. 但是,正如我在問題的最後一部分寫道,我真的不希望使用這種方式。分割字符串的問題是,如果發送的字符串或數組中已經包含逗號(,),那麼它也會將字符串與它分開。 –
所以我認爲如果你想發送一些包含逗號的值,那麼你可以添加任何特殊的字符到該值。比如說如果你找到了逗號(,),你可以替換它(#)或其他東西。爲了從控制器端獲得真正的價值,你必須用逗號代替(#)它。這可能是一種方式。 –