Как выполнить функцию обновления данных, полученных ajax в сервлете и jsp

#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 Я опубликовал код