Я хотел бы обновить свое представление после вызова ajax, отображающего скомпилированные ejs с сервера.
Эти два предыдущих вопроса, кажется, достигают этого, но я не могу обновить свое представление
Невозможно отобразить шаблон EJS на клиенте
Как создать контент на ejs с помощью jquery после вызова ajax на экспресс-сервер
Итак, насколько я понимаю, ядолжен скомпилировать мой ejs-файл (частичный) на сервере.
fixtures.ejs
<% fixtures.forEach((fixture) => { %>
<h2><%= fixture.home_team %> vs <%= fixture.away_team %></h2>
<% }) %>
index.js
app.post('/league_fixtures', async function (req, res) {
try {
var league_name = req.body.league_name;
const fixtures = await leagueFixtures(league_name);
//compile view
fs.readFile('./views/fixtures.ejs', "utf-8", function(err, template) {
fixture_template = ejs.compile(template, { client: true });
var html = fixture_template({fixtures: fixtures});
console.log(html);
// This logs out my HTML with fixtures so I am almost there
// <h2>Club Africain vs Al-Faisaly Amman</h2>
// <h2>Al Nejmeh vs ASAC Concorde</h2>
});
res.json({fixtures: fixtures });
} catch (err) {
res.status(500).send({ error: 'Something failed!' })
}
});
Ajax
$("a.league-name").on("click", function (e) {
e.preventDefault();
var league_name = $(this).text().trim();
$.ajax({
url: '/league_fixtures',
type: 'POST',
dataType: "json",
data: { league_name: league_name },
success: function(fixtures){
// How do i get HTML from server into here ?
$('#panel_' + league_name).html(fixtures);
},
error: function(jqXHR, textStatus, err){
alert('text status '+textStatus+', err '+err)
}
})
});
});
Я не получаю никаких ошибок при запуске ajax-запроса, но я также не получаю обновленные данные или HTML в моем div
Может кто-нибудь увидеть, что я делаю неправильно?
Спасибо