Я отправляю некоторые данные из JS в Node через AJAX и JQuery.Я настроил запрос на публикацию в Node и включил промежуточное ПО для проверки входа пользователя (и перенаправления его на страницу входа, если нет).
Res.redirect ()однако в моем промежуточном программном обеспечении, похоже, не работает мой почтовый запрос AJAX.Я установил другой маршрут GET с промежуточным программным обеспечением, и он работал нормально, просто почему-то не нравится AJAX.Вот мой код:
AJAX POST-запрос от JS:
saveButton.on("click", function() {
var mealPlan = [];
var inputText = $(".saveInput").val();
mealPlan.push(breakfastArr);
mealPlan.push(lunchArr);
mealPlan.push(dinnerArr);
$.ajax({
method: "POST",
data: {plan: mealPlan, name: inputText},
url: "/saverecipe"
})
.done(function() {
console.log("Done");
})
.fail(function(err) {
console.log(err);
})
});
Маршрут:
app.post("/saverecipe", isLoggedIn, function(req, res) {
//find the user
User.findById(req.user._id, function(err, user) {
if (err) {
console.log(err);
} else {
//create the meal plan
Plan.create(req.body, function(err, plan) {
if (err) {
console.log(err);
} else {
//push meal plan into user
user.mealPlans.push(plan);
user.save();
console.log("saved.");
}
})
}
})
});
Промежуточное ПО:
function isLoggedIn(req, res, next) {
if(req.isAuthenticated()) {
next();
} else {
console.log("Must log in");
res.redirect("/login");
req.flash("error", "Please log in first.");
}
};
Если я 'Я не вошел в систему, кажется, что промежуточное программное обеспечение работает минус бит res.redirect ().Запускается console.log («Must log in») внутри isLoggedIn, а console.log («сохранено») внутри app.post не запускается, указывая на то, что функция не завершена.Единственное, что не работает, это res.redirect ().Не уверен почему.
Любая помощь, которую вы можете оказать, очень ценится.