我会尽力解释我的问题/问题。
在我的jsp中,我有一些链接,一个用于论坛的每个消息。当我单击任何“.delete”链接时,将触发以下脚本:
$('.delete').click(function(event) {
event.preventDefault();
// some data recovering from the jsp's tags
var idMsg = $(this).closest('.li').attr('id');
var action = $(this).attr('name');
var origin = $('div#origin').attr('name');
...
// some checking
//alert('id: '+idMsg);
...
// I send the info to delete the message in the servlet
$.post("../app/ForumCampus", {action:action, idMsg:idMsg, origin:origin}, function(data) {
});
//$('.output').append('Message deleted successfully.');
});
起初,我不想刷新页面,我只显示了上面的成功消息。
但是现在,由于分页,我需要刷新servlet,并且我在post方法中有以下代码:
response.sendRedirect(contextPath+"/app/" + origin);
但是当AJAX进入servlet时,会执行所有操作(正确删除消息),但不会重定向到servlet。页面没有刷新。如果我手动刷新页面一切正常,删除的消息不会出现。
我的问题是:
1)servlet没有重定向,因为脚本还没有完成?为什么呢?
2)我可以在.click事件中键入以下代码来刷新servlet:
location.reload();
但是,有什么方法可以考虑更好?不使用Javascript或其他东西?
感谢您的进步,与您共同学习真是太酷了:)
答案 0 :(得分:4)
显然,您的Ajax调用不会在浏览器中执行重定向,应该如何工作?请记住,这是一个“幕后”的异步调用。
如果要使用Ajax控制重定向,则必须检查Ajax调用的结果(HTTP标头),然后使用JavaScript手动重定向(例如,使用document.location
)。
答案 1 :(得分:0)
我认为Ajax用于异步java脚本和XML,它在后台运行,所以不是重定向,你可以使用servlet中的request.getparameter()获取html输入标记的所有值,并使用
重定向该servletJavascript或jquery:
document.<formname>.action="<%=response.encodeURL("<sevlet name>")%>";
document.AdminForm.submit();
这适合你吗?