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