私は複数の選択肢の質問ページに取り組んでいます。私はそれを完全にajaxで扱いたいと思っています。私は、問題の選択肢の数に柔軟に対応したいと思っています。私は、jspページ「ModifyQueston.jsp」にオプション配列を送信したいajaxを使ってjspにjavascript配列を送る
$("#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},
});
});
:
はここでjqueryの一部です。
ここで私が送信されたデータの読み込みに使用する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ページ内の配列を読み取ることができないんだけど、これらのコードでは。私は、オプション配列の長さを読み込もうとしたとき、またはインデックスを提供して値を読み込もうとするときに、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("-");
それは正常に動作します。しかし、私はこのようにしたくありません。オプションのいずれかに既に ' - 'が含まれていると、コードがクラッシュするからです。
これを行うにはどうすればよいですか?
...!私のために返事をありがとう働いていた。しかし、私は質問の最後の部分に書いたように、私は本当にそれをこのように使用したくありません。文字列を分割する際の問題は、送信された文字列または配列にカンマ(、)がすでに含まれている場合は、その文字列も分割することです。 –
だから私はあなたがコンマを含むいくつかの値を送信する場合は、その値に任意の特殊な文字を追加することができますと思います。あなたがカンマ(、)を見つけたら、それを置き換えることができます(#)か他のものです。コントローラー側から実際の価値を得るためには、コンマで置き換える必要があります(#)。それは方法かもしれない。 –