Как перерисовать страницу .ejs с новыми данными после запроса ajax - PullRequest
0 голосов
/ 07 апреля 2019

Мне нужно заново обработать мой homepage.ejs с новыми данными на стороне сервера после запроса ajax. Я знаю, что вы (каким-то образом) можете визуализировать элементы в обратном вызове ajax, но мне было интересно, смогу ли я просто визуализировать мой homapage.ejs, так как у меня есть операторы if, которые ищут каникулы, и переменные current_user, чтобы установить правильные частичныеview.ejs

мой метод ajax:

function user_login(email, password) {
  var data = {};
  data.email_login = email;
  data.password_login = password;
  var message_header = $("#message_header");
  $.ajax({
    url: "/sign_in",
    method: 'POST',
    data: data
  }).done(function (res) {
    if (!res.success) {
      message_header.text("Incorrect email of password. Please try again.").css("color", "red");
      $("#username_textfield").val("");
      $("#password_textfield").val("");
    } 
    if (res.success) {
      console.log("user logged");
    }
  });

моя сторона сервера (внутри обратного вызова запроса)

get_all_vacations(function (error, vacations) {
  if (error) {
    console.log("error when getting vacations " + error);
    response.json({ success: false });
  } else {
    request.session.vacations = vacations;
    response.render('the_vacation.ejs', { vacations : vacations, current_user : new_current_user }, function() {
      response.json({success : true});
      console.log("in render method");
    });      
  }
});

Я попробовал это, но это не работает.

response.render('the_vacation.ejs', { vacations: vacations, current_user: new_current_user });

1 Ответ

0 голосов
/ 07 апреля 2019

Я думаю, что самый простой способ, основанный на том, как написан ваш код, - это использовать window.location.reload(); при успешном входе в систему.

function user_login(email, password) {
  var data = {};
  data.email_login = email;
  data.password_login = password;
  var message_header = $("#message_header");
  $.ajax({
    url: "/sign_in",
    method: 'POST',
    data: data
  }).done(function (res) {
    if (!res.success) {
      message_header.text("Incorrect email of password. Please try again.").css("color", "red");
      $("#username_textfield").val("");
      $("#password_textfield").val("");
    } 
    if (res.success) {
      console.log("user logged");
      window.location.reload(); // <--- Cause the browser to reload the EJS
    }
  });
...