无法从ajax调用的servlet转发到另一个jsp

时间:2012-05-09 10:35:55

标签: ajax servlets

我使用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。 有没有什么不同的方法呢? 任何人都可以请帮助

2 个答案:

答案 0 :(得分:3)

$.ajax中,添加以下内容:

dataType: 'text'

在成功部分,添加:

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

答案 1 :(得分:0)

您需要了解以下事实:当您从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;
                } 

            });