【问题标题】:can't forward to another jsp from servlet invoked by ajax无法从 ajax 调用的 servlet 转发到另一个 jsp
【发布时间】:2012-05-09 10:35:54
【问题描述】:

我正在使用 ajax 代码调用 servlet

$.ajax({
                url: 'servletName',
                data: {
                    userID: selectedID
                },
                type: 'post'
            });

我可以打印 servlet 中的值 但我不能转发到另一个jsp..... servlet 代码是

id = request.getParameter("userID");
System.out.println("Selected ID : "+id);

request.setAttribute("newID", id);

RequestDispatcher rd = request.getRequestDispatcher("/newpage.jsp");
rd.forward(request, response);

如果我从表单提交按钮调用这个 servlet,它就可以工作。 但它不会从 ajax 代码转发到另一个 JSP。 有什么不同的方法吗???? 谁能帮忙

【问题讨论】:

  • 它不转发到 JSP 做了什么?发生什么了?有什么例外吗?你是如何诊断前锋没有发生的?

标签: ajax servlets


【解决方案1】:

$.ajax 中添加:

dataType: 'text'

在成功部分,添加:

var url = "(your url)";  
$(location).attr('href', url);

【讨论】:

    【解决方案2】:

    您需要了解这样一个事实,即当您从 ajax 发送 http 请求时,这意味着您在主线程之外的单独线程中发送请求(您发送请求的页面本身)。因此 servlet 的重定向不会反映在客户端。为了实现这一点,发送回您想要重定向到的 URL 作为对请求的响应,并且在 ajax 的成功方法上只需使用 java 脚本 window.location(URL);

    在servlet

    JSONObject jobj = new JSONObject()
    String urlToRedirect = "test.jsp";
    jobj.put("url",urlStr);
    response.getWriter().write(jobj.toString());
    

    在客户端

    $.ajax({
                    url: 'servletName',
                    data: {
                        userID: selectedID
                    },
                    type: 'post',
                    success: function(data){
                      window.location = data.url;
                    } 
    
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多