Node.js и Express res.render () ничего не делают? - PullRequest
0 голосов
/ 17 сентября 2018

Я просмотрел все связанные посты и потратил много времени на поиски, но пока не нашел решения. Я пытаюсь создать шаблон ejs, но, похоже, ничего не происходит. Мой код:

Внешний скрипт:

 $('#search').click(function(){
         var query =$('#search-query').val();//get value from searchbar
         var url = '/search/' + query;
         $.ajax({
         url: url,
    type:'GET',
    success: function(data){
      console.log('success');
    },
    error: function(){
      console.log('error');


  })
}

Backend:

app.get("/search/:query", function(req, res){
  var query = req.params.query;
  Note.find({course: query}, function(err, foundNotes){//search database
    if(err){
      console.log(err);
    } else {
      console.log(foundNotes);//this displays the expected results from searching the database
      res.render('search.ejs', {notes: foundNotes});//appears to do nothing
      console.log('upload');//this also gets logged
    }

  })
});

Обычно при нажатии кнопки я хочу, чтобы она отправляла запрос GET к пути '/ search /: query' со значением во входных данных в качестве поискового запроса. Затем я ищу в базе данных и затем отображаю шаблон ejs, который отображает результаты поиска.

Проблемной строкой является res.render ('search.ejs, {notes: foundNotes}). Кажется, он ничего не делает. Если я ввожу путь вручную, он работает, но, похоже, он не работает при нажатии кнопки. Я думаю, что здесь может не хватать ключевой концепции.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 17 сентября 2018

Ваш движок рендеринга настроен правильно перед вашим app.get?

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

Что вы видите в ответе в инспекторе сети?

Пример:

// мой обработчик ajax

router.get("/a", function(req, res){ res.render("a.ejs",{a: 11})});

// мой файл ejs

<p>
<span>hello <%- a %></span>
</p>

// мой запрос ajax на лицевой стороне:

$.ajax({
    url: "/a",
    type:'GET',
    success: function(data){
      // in data i have : <p><span>hello 11</span></p>

      document.getElementById("mydiv").innerHTML = data;
    },
    error: function(){
      console.log('error');


  }})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...