我想在从服务器获得成功响应后实现重定向。我尝试按照描述的方式进行操作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/