- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个 servlet 代码,这里第一个我想发送返回消息(如果消息!=null)到 Ajax 以进行警报,第二个如果消息==null 我想调用另一个 jsp 并将列表传递给这个 jsp。
if(message!=null){
response.setContentType("text/plain");
response.getWriter().write(message);
}else{
JSONObject jobj = new JSONObject();
String urlToRedirect = "SearchEmployee.jsp";
jobj.put("url",urlToRedirect );
response.getWriter().write(jobj.toString());
}
这里我无法理解如何在其他部分调用这个jsp url
$.ajax({
type:"POST",
url:'../SearchEmployeeServlet',
data:$('#DisplayEmployeeListForm').serialize(),//$('form').serialize();
success:function(msg){
if(msg!=""){
alert(msg);
window.location.reload(true);
}else{
....here i want to call 2nd jsp
}
}
});
最佳答案
您可以将请求转发到服务器端,以避免需要客户端发出第二个请求:
request.getRequestDispatcher("SearchEmployee.jsp").forward(request, response);
或者,您可以发送一个 HTTP 重定向响应,这样客户端应该自动处理对第二个请求的重定向:
response.sendRedirect(response.encodeRedirectUrl("SearchEmployee.jsp"));
请注意,您如何在 JavaScript 中处理此问题取决于您希望从 SearchEmployee.jsp
接收到的数据类型.例如,如果它是 XML 并且您已将响应内容类型设置为 text/xml
jQuery 将解析它并将一个 XML DOM 对象传递给您的 success
功能:
success:function(msg) {
if (msg instanceof XMLDocument) {
// handle list
} else {
alert(msg);
window.location.reload(true);
}
}
如果您需要 HTML,这可能会作为字符串返回,因此您可以测试以查看返回的字符串是否以某些 HTML 开头。例如,如果您的 HTML 始终以 <ul>
开头标签:
success:function(msg) {
if (msg.startsWith("<ul>")) { // note you may need to do msg = $.trim(msg) first
// handle list
} else {
alert(msg);
window.location.reload(true);
}
}
如果您不想按照上面的建议自动转发,而宁愿坚持当前的方法,则需要更改一些内容。
使用 if(msg!="")
在你的success
功能不好,因为它将返回 true
只要服务器不返回空响应(因此在这两种情况下您都会收到警报)。
首先要做的是添加一个content-type
header 到您的 servlet 代码以指示您在第二种情况下返回 JSON:
response.setContentType("application/json");
response.getWriter().write(jobj.toString());
现在当 jQuery 处理响应时,它会在调用 success
之前尝试将其解析为 JSON功能。因此,您现在可以在成功函数中测试 jQuery 提供给您的参数是对象还是字符串:
success:function(msg){
if (typeof msg === "object") {
// you got the JSON response
$.ajax({
url: msg.url,
// etc...
});
} else {
// you got the plain text response
alert(msg);
window.location.reload(true);
}
}
关于ajax - 如何从 AJAX 发送调用到 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33495018/
我是一名优秀的程序员,十分优秀!