如果定位网址未返回,该怎么办?

时间:2011-03-23 08:11:19

标签: java jquery ajax servlets

这是我用来按固定时间间隔点击网址的示例代码。

$(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重定向不起作用。响应又回到了同一页。

3 个答案:

答案 0 :(得分:2)

当您的AJAX响应重定向到另一个页面时,重定向的页面将作为您的AJAX请求的响应被提取,这就是为什么您只获得200作为HTTP状态。

您无法根据使用AJAX收到的HTTP状态代码处理重定向。

除非您对其进行编程,否则AJAX响应无法将您重定向到其他页面。

因此,如果您想根据AJAX响应进行重定向,则应修改服务器端代码,将重定向URL作为响应发送给您,而不是重定向。

参考one of answers with example solution

答案 1 :(得分:0)

AJAX并不意味着重定向。这些标题不会被您的浏览器执行,因此您可以继续使用该页面! 你的servlet给出的确切代码是什么?

答案 2 :(得分:0)

代码正在完成其编写的操作。您正在触发ajax调用,在响应200中,您将计数器设置为#msg的html。代码中没有任何内容可以让您重定向到New Page

如果要重定向,则此处不需要ajax。否则,如果您的重定向基于servlet返回的响应,请在complete中捕获它并设置window.location.href = 'your/redirect/url/'以加载新页面。