javascript - jQuery Ajax 调用后无法重定向

标签 javascript jquery ajax redirect

我想在从服务器获得成功响应后实现重定向。我尝试按照描述的方式进行操作here ,但遗憾的是无法实现所需的行为。

将数据发送到服务器并执行重定向的函数如下:

 $("#btn-login").click(function(){
                if ($('#loginform').valid() == false) {
                    return false;
                }
                var formData = $("form#loginform").serialize();
                $.ajax({
                    type: "POST",
                    url: "/authentication/login",
                    data: formData,
                    success: function(data, textStatus){
                        console.log(formData);
                        //console.log(data);
                        if(data.redirect){
                            window.location.href = data.redirect;
                        }
                    },
                    error: function(e){
                        alert(e.responseText);
                    }
                });
            });

在服务器端,执行以下函数:

/* Handle Login POST */
router.post('/login', passport.authenticate('login', {
    successRedirect: '/',
    failureRedirect: '/authentication',
    failureFlash : true
}));

有谁知道为什么客户端的函数在收到服务器的响应后没有重定向?

谢谢!

最佳答案

console.log(data) 的输出是什么?

看来服务器正在重定向,因此当前端代码收到服务器的输出时,它已经是 successRedirect 或 failureRedirect 页面,因此您的代码 window.location.href = data.redirect 未到达。检查data,它应该具有重定向属性。如果没有,我的猜测是服务器已经在进行重定向,而您没有看到它,因为您是通过 ajax 调用它的。这可以在网络检查器的网络选项卡中确认。

关于javascript - jQuery Ajax 调用后无法重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339870/

相关文章:

javascript - 生成用于渲染外部组件的 JSX

javascript - 使用 Jquery 和 Ajax 的 Accordion 列表

javascript - 使用angularjs在特定页面加载外部库

javascript - 什么是用于触摸手势的优秀 JavaScript 库或 jQuery 插件?

javascript - 根据 json 对象的值更改 ajax 函数的输出

jQuery:唯一的 Each() var append

jquery - 如何使用 jQuery 选择某种元素类型的第一个同级元素?

javascript - 返回未定义的 ajax 函数

javascript - 护照验证

javascript - 更改 bootstrap 4.2 轮播持续时间