【问题标题】:How to redirect/forward request to another jsp page in servlet called by $.ajax() function如何将请求重定向/转发到 $.ajax() 函数调用的 servlet 中的另一个 jsp 页面
【发布时间】:2013-07-17 09:27:46
【问题描述】:

我正在使用 $.ajax() 函数在我的应用程序中调用 servlet,我正在将请求转发到另一个 jsp 页面并设置请求属性.....我只是想知道转发请求和设置的好方法基于ajax的servelt中的请求参数? 这是我的示例代码.....

          var id= $("#id").val();

          $("#add-btn").click(function(e) {                                                                                                 
                e.preventDefault();         
                var dataString ='action=insert'+'&id='+id
                console.log(dataString);
                $.ajax({
                    type: "POST",
                    url: "RecordHandler",
                    data: dataString,
                    success: function(data){  
                        console.log('Add');
                        $('body').html(data);
                        $('body').prepend('<div style="width:100%;text-align:center;"><h3 style="color:green" >Record Added Succesfully</h3></div>')
                    }
                });  

            });

这是我的 servlet 代码......

  private static String UserRecord = "/list.jsp";

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

    String redirect = "";
    String action = request.getParameter("action");
    if (action.equalsIgnoreCase("insert")) {
      String id= request.getParameter("id");
      int uid = Integer.parseInt(id);
      RecordBean record = new RecordBean();
      record.setId(uid);
      dao.addRecord(record);
      redirect = UserRecord;
      request.setAttribute("records", dao.getAllRecords()); //Is it good approach to set request attribute in ajax based servlet?
      System.out.println("Record Added Successfully");

      RequestDispatcher view = request.getRequestDispatcher(redirect);//Is it good approach to redirect request in ajax based servlet?
      view.forward(request, response);
 }

如何在不刷新页面的情况下使用ajax...... 即使我在 ajax 成功方法中使用 window.location.herf="list.jsp" 它也在刷新页面

【问题讨论】:

  • 当然...为什么不呢?当然你可以用 JSON 或其他现代的东西来做。但是从 servlet 重定向到 jsp 并在成功调用 ajax 后显示其内容是一种标准方式 - 恕我直言。
  • 好的,谢谢你的评论

标签: java jquery ajax jsp servlets


【解决方案1】:

当您通过 AJAX 调用 servlet 时,根据定义,无论服务器发送的标头如何,您都会停留在同一页面上。

如果你想改变页面,你必须使用javascript,在$.ajax(..)调用的成功处理函数中。

您可以读取Location 响应标头并将window.location.href 设置为该值。 See here for other options.

【讨论】:

    猜你喜欢
    • 2014-09-30
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多