1

我正在使用 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。有什么不同的方法吗????谁能帮忙

4

2 回答 2

3

$.ajax中,添加:

dataType: 'text'

在成功部分,添加以下内容:

var url = "(your url)";  
$(location).attr('href', url);
于 2012-09-27T11:15:42.650 回答
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;
                } 

            });
于 2013-09-20T05:09:05.823 回答