这是我用来按固定时间间隔点击网址的示例代码。
$(document).ready(function() {
var counter = 1;
$.doTimeout( 1000, function() {
$.ajax({
type: "GET",
url: "<%=encodeUrl%>",
timeout: 10000,
dataType: "text",
complete: function(resp) {
if (resp.status == 200) {
$("#msg").html(counter++);
} else {
$("#msg").html("Failed");
return true;
}
}
});
});
});
目标URL是一个将控件转发到另一个JSP的servlet。根据我的理解,我必须重定向到新页面。但它显示与计数器值1相同的页面。意味着,从目标servlet重定向不起作用。响应又回到了同一页。
答案 0 :(得分:2)
当您的AJAX响应重定向到另一个页面时,重定向的页面将作为您的AJAX请求的响应被提取,这就是为什么您只获得200作为HTTP状态。
您无法根据使用AJAX收到的HTTP状态代码处理重定向。
除非您对其进行编程,否则AJAX响应无法将您重定向到其他页面。
因此,如果您想根据AJAX响应进行重定向,则应修改服务器端代码,将重定向URL作为响应发送给您,而不是重定向。
答案 1 :(得分:0)
AJAX并不意味着重定向。这些标题不会被您的浏览器执行,因此您可以继续使用该页面! 你的servlet给出的确切代码是什么?
答案 2 :(得分:0)
代码正在完成其编写的操作。您正在触发ajax调用,在响应200中,您将计数器设置为#msg
的html。代码中没有任何内容可以让您重定向到New Page
。
如果要重定向,则此处不需要ajax。否则,如果您的重定向基于servlet返回的响应,请在complete
中捕获它并设置window.location.href = 'your/redirect/url/'
以加载新页面。