#ajax #jsp #servlets
#ajax #jsp #сервлеты
Вопрос:
Я пытаюсь обновить значения страницы jsp, которые извлекаются из базы данных через ajax.
вызов ajax для сервлета
$(document).ready(function(){
var sid = $('#surveyId').val();
alert(sid);
$.ajax({
url: "getEditSurvey",
data:{
sid:sid
},
success: function(response){
alert(response);
$("#displayEdit").html(response);
}
});
});
сервлет извлек данные из базы данных
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
int sId=0;
if(request.getParameter("sid") != null)
{
sId=Integer.parseInt(request.getParameter("sid"));
}
query1 = "select surveyId, surveyName, questionName, surveyquestionId fromrn"
"(select s.surveyId, s.surveyName, q.questionName, q.surveyquestionId from rn"
"surveydetail s inner join questiondetail q on s.surveyId=q.surveyId ) as result where surveyId=?";
query2 = "select surveyId, surveyquestionId, selectType, optionName, points from rn"
"( select s.surveyId, q.surveyquestionId, q.selectType, o.optionName, o.points from surveydetail srn"
"Left join questiondetail q on q.surveyId = s.surveyIdrn"
"Left join optiondetail o on o.surveyquestionId = q.surveyquestionId)as result rn"
"where surveyId = ? and surveyquestionId=?";
try
{
Class.forName(JDBC_Driver);
con = DriverManager.getConnection(URL, username, password);
pstmt = con.prepareStatement(query1);
pstmt.setInt(1, sId);
rs1 = pstmt.executeQuery();
int i=0;
String qname=null;
if(rs1.next())
{
out.println("<center><input type='text' name='surveyName' id='surveyName' value=" rs1.getString("surveyName") " ></center><br>");
}
while(rs1.next())
{
i ;
qname=rs1.getString("questionName");
int sqid = rs1.getInt("surveyquestionId");
// out.println(" <form action='getUpdateSurveyController' method='post'>");
out.println("<input type='hidden' name='surveyId' value='" sId "'>");
out.println("<label>" i "</label>amp;nbsp;<input type='text' name='surveyQuestion[]' id='surveyQuestion' value=" rs1.getString("questionName") " ><br>");
pstmt1 = con.prepareStatement(query2);
pstmt1.setInt(1, sId);
pstmt1.setInt(2, sqid);
rs2=pstmt1.executeQuery();
while(rs2.next())
{
if (rs2.getString("selectType").equals("multiple"))
{
out.println("<div class='checkbox'><input type='checkbox' value='' >amp;nbsp;amp;nbsp;<input type='text' name='questionName[]option[] id='option_' value=" rs2.getString("optionName") " >amp;nbsp;amp;nbsp;<input type='number' name='questionName[]point[]' value=" rs2.getString("points") "></div>");
}
else if (rs2.getString("selectType").equals("single"))
{
out.println("<div class='radio'><input type='radio' name='optradio' value='' >amp;nbsp;amp;nbsp;<input type='text' name='questionName[]option[] id='option_' value=" rs2.getString("optionName") " >amp;nbsp;amp;nbsp;<input type='number' name='questionName[]point[]' value=" rs2.getString("points") "></div>");
}
else if(rs2.getString("selectType").equals("short"))
{
out.println("<div class='form-group'><label for='comment'>Comment:</label><textarea class='form-control' rows='5' name='questionName[]option[]' id='comment'>Default Value:</textarea></div>");
}
else if(rs2.getString("selectType").equals("long"))
{
out.println("<div class='form-group'><input type='text' name='questionName[]option[] id='option_' value='' ></div>");
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
попытка выполнить функцию обновления на странице jsp
<input type="hidden" name="surveyId" id="surveyId" value="<%= request.getParameter("sId") %>" >
<form action="getUpdateSurveyController" method="post">
<div id="displayEdit">
</div>
<input type="submit" name="update" value="Update Survey" id="update">
</form>
другой код servlet getUpdateSurveyController :-
if(request.getParameterValues("surveyQuestion")!=null)
{
questionName = request.getParameterValues("surveyQuestion");
}
if(questionName != null )
{
for(i=0;i<questionName.length;i )
{
value = request.getParameterValues("questionName[" i "]option[]");
if(request.getParameterValues("questionName[" i "]point[]")!=null)
{
point = request.getParameterValues("questionName[" i "]point[]");
}
}
}
try
{
Class.forName(JDBC_Driver);
con = DriverManager.getConnection(URL, username, password);
query="update surveydetail set surveyName =? where surveyId=? and surveyName != ?";
pstmt = con.prepareStatement(query);
pstmt.setString(1, surveyName);
pstmt.setInt(2, surveyId);
pstmt.setString(3, surveyName);
int row = pstmt.executeUpdate();
if(questionName != null )
{
for(i=0;i<questionName.length;i )
{
query="select * from questiondetail where surveyId=? and questionName=?";
pstmt1 = con.prepareStatement(query,Statement.RETURN_GENERATED_KEYS);
pstmt1.setInt(1, surveyId);
pstmt1.setString(2, questionName[i]);
rs = pstmt1.executeQuery();
if(rs.next())
{
questionId=rs.getInt(1);
}
query1="update questiondetail set questionName = ? where surveyId=? and questionName != ?";
pstmt2 = con.prepareStatement(query1);
pstmt2.clearParameters();
pstmt2.setString(1, questionName[i]);
pstmt2.setInt(2, questionId);
pstmt2.setString(3, questionName[i]);
row = pstmt2.executeUpdate();
value = request.getParameterValues("questionName[" i "]option[]");
if(request.getParameterValues("questionName[" i "]point[]")!=null)
{
point = request.getParameterValues("questionName[" i "]point[]");
for(int j=0;j<value.length;j )
{
query="select * from optiondetail where surveyquestionId=? and optionName=?";
pstmt3 = con.prepareStatement(query,Statement.RETURN_GENERATED_KEYS);
pstmt3.setInt(1, questionId);
pstmt3.setString(2, value[j]);
rs = pstmt1.executeQuery();
if(rs.next())
{
optionId=rs.getInt(1);
}
query1="update questiondetail set optionName = ? where optionId=? and optionName != ?";
pstmt4 = con.prepareStatement(query1);
pstmt4.clearParameters();
pstmt4.setString(1, value[j]);
pstmt4.setInt(2, optionId);
pstmt4.setString(3, value[j]);
row = pstmt4.executeUpdate();
}//for inner
}//if inner
}
}
}
Моя проблема: при попытке получить доступ к значениям для метода обновления, он показывает нулевые значения, как получить к ним доступ в jsp для выполнения дальнейшей операции
Комментарии:
1. Как вызывается ajax? загрузка страницы? Также
alert(sid);
показывает правильное значение?2. @Swati при загрузке страницы да, она показывает правильное значение
3. давая правильный ответ, теперь я хочу выполнить операцию обновления этих данных, но когда я пытаюсь получить к ним доступ с помощью формы отправки, отображающей нулевые значения
4. где
getUpdateSurveyController
код сервлета?5. @swati Я опубликовал код