【问题标题】:Servlet's response without refreshing JSP [duplicate]没有刷新JSP的Servlet响应[重复]
【发布时间】:2016-12-09 01:33:56
【问题描述】:

我想在同一页面中打印我的 servlet 的响应而不刷新页面。我写了这段代码,但我不明白为什么它打开页面:http://localhost:8080/..../NewServlet.do 而不是在同一页面中显示结果。

       <html>
       <head>
       <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

  <script type="text/javascript">

  var form = $('#form1');
  form.submit(function () {

   $.ajax({
   type: form.attr('method'),
   url: form.attr('action'),
   data: form.serialize(),
   success: function (data) {
   var result=data;
   $('#result').attr("value",result);

      }
    });

    return false;
    });  </script>
  </head>
     <body>
     <form name=form1 action="NewServlet.do" method="post">
   <select id='choose' class='form-control' name='choose'>
<option value='prodotti'>Products</option>
<option value='login'>Objects</option>
 </select>
<button type='submit' class='btn btn-default' style="width:  40%;">SUBMIT</button>

     <div id='result'>
      ///  I want the servlet's response is placed here.
   </div>

    </form>
   </body>
   <html>

我的小服务程序

     protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        response.setContentType("text/html");
        String i = request.getParameter("choose");
        PrintWriter out = response.getWriter();
        out.println("<br>"+i+"</br>");

      }

【问题讨论】:

    标签: java jquery ajax jsp servlets


    【解决方案1】:

    这实际上不是关于 Java 或 JSP,而是关于 JavaScript。试试

    form.submit(function (event) {
      event.preventDefault(); // magic!
      $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize(),
        success: function (data) {
          var result=data;
          $('#result').attr("value",result);
        }
      });
      return false;
    });
    

    【讨论】:

    • 什么都没有。它重新加载页面:(
    • 啊,现在我明白了:首先,您的表单没有 id,但您使用 ID 选择器获取它 - 无法正常工作,请在表单中添加 id="form1"。其次,我会将脚本包装到$(document).ready(function(){ ... here the original code ... }); 中,以确保在我们修改它时,DOM 已经构建好了。
    • 我修改了我的代码(不是你写的那个)添加 id='form1'。它不起作用。然后我使用了你的代码,它不起作用。似乎没有读取或激活javascritp代码..:/
    • 浏览器控制台有错误吗?您是否尝试过调试 javascript?
    • 调试发现没有进入函数。所以我把脚本放在文件 html 的末尾。现在它可以工作了,实际上 javascript 代码已被激活,但在
      中没有打印任何内容
    【解决方案2】:

    试试这个: 在jsp中

    <input class="help_button" id="help_button" type="button" onclick="showDetail()" value="Do Smth" />
    
    
       function showDetail() {
    
        $.ajax({
             url:'/yourServlet.cfm',
             data:{dataName:data},
            type: 'GET',
        })
        .done(function(result) {
            //here do smth with result 
      });
    }
    

    你的 Servlet

    response.setContentType("text/plain");
    response.getWriter().print("responseData"); //----Sending response
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      • 2013-05-31
      • 2012-11-06
      • 2015-08-25
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多