0

我有一个简单的弹出登录,它将状态返回到 div(如果传递不正确)或重定向到主页。

这是处理请求的代码:

$.ajax({
     type: "POST",
     url: "login.html",
     cache: false,
     data: formData
     success: function(data){
        var $response=$(data);
        $('#response').text($response.find('#response').text());
        if($('#response').text().length<=0)
        {
            window.location="main.html";
        }
     }
 });

我正在使用 spring MVC 来处理请求。Login.html 返回字符串(传递不正确)。但是当我从 Spring 获得重定向时,什么也没有发生。所以我临时添加了重定向的客户端代码。

这种方法正确吗?因为我在两种方式上都取得了成功(密码错误或正确)

4

1 回答 1

0

查看当您从 Spring 重定向时,您的页面将如何被重定向..因为您正在执行 ajax 提交..当您从 Spring 重定向并返回主页时,您可以在 ajax 调用的变量数据中看到主页 html。规则很简单..当你做ajax..浏览器正常提交不会干扰..在理想情况下,当有正常提交服务器将发送HTTP代码为302并且你的页面将被重定向到新位置(意味着新页面打开)。

你可以试试这个方法:

$.ajax({
     type: "POST",
     url: "login.html",
     cache: false,
     data: formData
     success: function(data){
       document.open();
       document.write(data);//home page from server after authentication..dont forget to add redirect logic at spring
       document.close();
     }
 });

我希望您没有使用 Spring-security 进行身份验证..因此您可能需要编写很多自己的过滤器方法。另外,不要尝试使用来自身份验证的正常提交方法,而不是 ajax。因为在 ajax 中,您可能需要使用您自己的会话 id 设置浏览器 cookie,这在正常身份验证过程中会很容易处理..谢谢

于 2013-02-08T11:25:14.213 回答