1
我想在從服務器獲得成功響應後實現重定向。我試圖按照here所述的相同方式進行操作,但不幸的是無法達到所需的行爲。jQuery Ajax調用後無法重定向
將數據發送到服務器,並應該執行重定向的功能如下:
$("#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);
}
});
});
在服務器端,則執行followoing功能:
/* Handle Login POST */
router.post('/login', passport.authenticate('login', {
successRedirect: '/',
failureRedirect: '/authentication',
failureFlash : true
}));
有誰知道爲什麼客戶端的功能在收到來自服務器的響應後沒有重定向?
謝謝!
數據實際上是應該重定向到的位置頁面的html源代碼。 –
確認服務器正在重定向,讓我檢查護照lib文檔以瞭解如何返回json響應而不是重定向。通過這種方式,您可以通過ajax登錄並重定向自己 – Juank
請查看http://passportjs.org/docs上的自定義回調部分。這樣你就可以從你的服務器返回一個json而不是一個重定向,就像'{redirect:'mySecurePageRoute'}'。現在在你的ajax響應中,你應該得到一個json對象,而不是一堆html – Juank