【问题标题】:Ajax call with spring MVC and Hibernate使用 Spring MVC 和 Hibernate 进行 Ajax 调用
【发布时间】:2014-11-20 00:28:05
【问题描述】:

每当用户从选择框中选择一个选项时,我都会尝试传播输入类型[文本]中的值。

我有一个包含一个选择选项和 3 个输入类型(文本)字段的表单。每当用户根据该选项值从选择框中选择一个选项时,我在这里尝试做什么在数据库中。

我也使用了 ajax 调用,但问题是在选择选项值时我能够获取特定数据但我无法在 jsp 输入类型中获取相同的数据,每次我需要重新加载手动翻页。

userdetail.jsp

//imports are here

     <html>
      <head>
      </head>
      <body>

     <script src="js/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
          $(document).ready(function(){
              $(".name").change(function(){
                  var name = $(this).val();
                  if(name.length >= 1){
                      $(".status").html("<font color=gray> Checking availability...</font>");
                       $.ajax({
                          type: "POST",
                          url: "getparamfromdb.do",
                          data: "name="+name,
                          success: function(msg){

                              $(".status").ajaxComplete(function(event, request, settings){

                                  $(".status").html(msg);

                              });
                          }
                      }); 
                  }
                  else{

                      $(".status").html("<font color=red>Username should be atleast <b>5</b> character              long.</font>");
                  }

              });
          });
        </script>

        <div class="add">

     <form:form   method="post" action="addHealthParam.do" >
     <table style="margin-top:-6%; margin-left:8%;">
     Parameter Name:<br>
     <select name="name" class="name">
    <option value="select">Select</option>
     <option value="Glucose, Serum">Glucose, Serum</option>
     <option value="Uric Acid, Serum">Uric Acid, Serum</option>
     <option value="Platelets">Platelets</option>
        <option value="NRBC">NRBC</option>
      </select> 
      Parameter Current Reading:
     <input type="text" name="current_reading"/>

      Unit of Measurement:
      <select name="measurementunit" >
      <option>
      <c:forEach var="healthp" items="${paramvalue}">
               ${healthp.measurementunit}
                    </c:forEach>

      </option>
      </select>
       Reference Range(Minimum):
         <input type="text" name="minrange" value="
         <c:forEach var="healthp" items="${paramvalue}">
          ${healthp.minrange}
          </c:forEach>" >
        Reference Range(Maximum):<br>
       <input type="text" name="maxrange" 
        value="
       <c:forEach var="healthp" items="${paramvalue}">
               ${healthp.maxrange}
        </c:forEach>">


     <input type="submit" value="Submit"/>
     </body>
     </html>    

控制器类:-

 imports are here

    @Controller
    @SessionAttributes
    public class HealthParameterController {

    @Autowired
    BharatService service;
    @Autowired
    HibernateTemplate hibernateTemp;
    List<HealthParameter> healthparam=null;
    // to store the value in database.
    @RequestMapping(value="/addHealthParam.do",method=RequestMethod.POST)
    public String addHealthParam(@ModelAttribute("addhealthparam")HealthParamMVC                  addhealthparam,BindingResult result,HttpSession session){

            // code to store the value in database 

        }
    // execute through ajax call

    @RequestMapping(value="/getparamfromdb.do",method=RequestMethod.POST)
         public String gettingParam(@ModelAttribute("addhealthparam")
                 HealthParamMVC addhealthparam,BindingResult result,
                 HttpServletRequest req,HttpSession session){
        System.out.println("In gettingParam ");
        String name=addhealthparam.getName();


     List<ParameterFromDB> li=service.getParamfromDb(name);
             // further getting value from database based on name.
         Iterator it=li.iterator();
         while(it.hasNext()){
             Object ob=it.next();
            ParameterFromDB db= (ParameterFromDB) ob;
             }
           session.setAttribute("paramvalue", li);
         // i have tried it with request also
             //request.setAttribute("paramvalue", li);
             return "userdetails";  



       }
       }

【问题讨论】:

  • 您在 HTML 中声明的输入类型在哪里?是 current_reading 吗?如果是,那么您需要设置该输入类型。将 current_reading 声明为 ID,然后设置 $("#current_reading").val(msg);在javascript中
  • @Jani yaa 这是我在这里添加代码的同一个问题
  • @Jignesh 如您所见, current_reading 将仅由用户输入。根据参数名称(选择),我想从数据库中填充 3 个字段值(最小范围、最大范围和测量单位),然后用户可以通过单击提交按钮提交。即使我已经根据选择选项值获得了这些值(在控制台上),但是这些值我将无法在 jsp 页面中传递(每次都需要重新加载才能获取数据)。

标签: java ajax spring-mvc


【解决方案1】:

这里是一些修改代码。请检查并让我知道它是否正常工作。

<html>
      <head>
      </head>
      <body>

     <script src="js/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
          $(document).ready(function(){
              $(".name").change(function(){
                  var name = $(this).val();
                  if(name.length >= 1){
                      $(".status").html("<font color=gray> Checking availability...</font>");
                       $.ajax({
                          type: "POST",
                          url: "getparamfromdb.do",
                          data: "name="+name,
                          success: function(msg){

                              $(".status").ajaxComplete(function(event, request, settings){
                                    var json = eval(msg);
                                  $(".status").html(msg);
                                  var minRange = json.MINRANGE;
                                  vat maxRange = json.MAXRANGE;
                                  $('#minrange').val(minRange);
                                  $('#maxRange').val(maxRange);

                              });
                          }
                      }); 
                  }
                  else{

                      $(".status").html("<font color=red>Username should be atleast <b>5</b> character              long.</font>");
                  }

              });
          });
        </script>

        <div class="add">

     <form:form   method="post" action="addHealthParam.do" >
     <table style="margin-top:-6%; margin-left:8%;">
     Parameter Name:<br>
     <select name="name" class="name">
    <option value="select">Select</option>
     <option value="Glucose, Serum">Glucose, Serum</option>
     <option value="Uric Acid, Serum">Uric Acid, Serum</option>
     <option value="Platelets">Platelets</option>
        <option value="NRBC">NRBC</option>
      </select> 
      Parameter Current Reading:
     <input type="text" name="current_reading"/>

      Unit of Measurement:
      <select name="measurementunit" >
      <option>
      <c:forEach var="healthp" items="${paramvalue}">
               ${healthp.measurementunit}
                    </c:forEach>

      </option>
      </select>
       Reference Range(Minimum):
         <input type="text" id="minrange" value="
         <c:forEach var="healthp" items="${paramvalue}">
          ${healthp.minrange}
          </c:forEach>" >
        Reference Range(Maximum):<br>
       <input type="text" id="maxrange" 
        value="
       <c:forEach var="healthp" items="${paramvalue}">
               ${healthp.maxrange}
        </c:forEach>">


     <input type="submit" value="Submit"/>
     </body>
     </html> 

我在这里使用响应对象。你需要得到它。

imports are here

    @Controller
    @SessionAttributes
    public class HealthParameterController {

    @Autowired
    BharatService service;
    @Autowired
    HibernateTemplate hibernateTemp;
    List<HealthParameter> healthparam=null;
    // to store the value in database.
    @RequestMapping(value="/addHealthParam.do",method=RequestMethod.POST)
    public String addHealthParam(@ModelAttribute("addhealthparam")HealthParamMVC                  addhealthparam,BindingResult result,HttpSession session){

            // code to store the value in database 

        }
    // execute through ajax call

    @RequestMapping(value="/getparamfromdb.do",method=RequestMethod.POST)
         public String gettingParam(@ModelAttribute("addhealthparam")
                 HealthParamMVC addhealthparam,BindingResult result,
                 HttpServletRequest req,HttpSession session){
        JSONObject json   = new JSONObject();
        JSONArray  jsonArray = new JSONArray();
        System.out.println("In gettingParam ");
        String name=addhealthparam.getName();


     List<ParameterFromDB> li=service.getParamfromDb(name);
             // further getting value from database based on name.
         Iterator it=li.iterator();
         while(it.hasNext()){
             Object ob=it.next();
            ParameterFromDB db= (ParameterFromDB) ob;
            String minRange = ""; // Create what you want to display in Minrange Text Box
            String maxRange = ""; // Create what you want to display in Maxrange Text Box
             }

             json.put("MINRANGE",minRange);
             json.put("MAXRANGE",maxRange);
             //Get a RESPONCE object here.
             PrintWriter out = response.getWriter();
             out.print(json.toString());
           session.setAttribute("paramvalue", li);
         // i have tried it with request also
             //request.setAttribute("paramvalue", li);
             return "userdetails";  



       }
       }

【讨论】:

  • 现在即使它停止调用选择选项值的方法。意味着不调用控制器的方法。
  • 不要复制和破坏我的代码。我只是在那里举个例子。调试任何问题的代码并让我知道..
  • 我现在可以调用控制器的方法并从数据库中获取值,也可以在从这里放置数据后打印 json 对象,它工作正常,但我仍然无法在 jsp 中获取值页。 var json = eval(msg); var minRange = json.MINRANGE; var maxRange = json.MAXRANGE; $('#minrange').val(minRange); $('#maxrange').val(maxRange);
  • 仍然面临同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
相关资源
最近更新 更多