简体   繁体   English

使用Spring MVC和Hibernate进行Ajax调用

[英]Ajax call with spring MVC and Hibernate

I am trying to propagate the value in input type[text] whenever user is selecting one option from select box. 每当用户从选择框中选择一个选项时,我都尝试在输入类型[文本]中传播值。

I have a form containing one select option and 3 input type(text) field. 我有一个包含一个选择选项和3个输入类型(文本)字段的表单。 What i am trying to do here whenever user select one option from select box depending upon that option value some data i want to fetch from database and propagate to the same page in input type and then after clicking on submit button i want to store the data in database. 每当用户根据选择值从选择框中选择一个选项时,我想在这里做什么?我想从数据库中获取一些数据并以输入类型传播到同一页面,然后单击“提交”按钮后,我要存储数据在数据库中。

I have used ajax call for the same but the problem is that on selecting option value i am able to get the particular data but i am not able to get the same data in jsp input type, each time i need to reload the page manually. 我已经使用了ajax调用,但是问题是,每次我需要手动重新加载页面时,在选择选项值时我都能够获取特定数据,但在jsp输入类型中却无法获取相同数据。

userdetail.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>    

Controller class:- 控制器类别:-

 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";  



       }
       }

Here is some modify code. 这是一些修改代码。 please check and let me know it's working or not. 请检查并让我知道它是否有效。

<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> 

i use response object here. 我在这里使用响应对象。 you need to get that. 你需要做到这一点。

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";  



       }
       }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM