Я пытаюсь добавить HTML динамически с помощью среды Express в статическом HTML-файле, который обслуживает мой сервер. Я нашел о модуле cheerio, который делает именно то, что я хочу, но мне было интересно, есть ли гораздо более дешевый способ для системы, а не для загрузки всего HTML и добавления строки.AJAX call with Express
Я искал об AJAX и о том, как общаться с клиентом, но мне не удалось заставить его работать. Код, я использую с Cheerio является:
exports.modify = function(req, res){
var html = fs.readFileSync(__dirname + '/../public/index.html', 'utf8');
var $ = cheerio.load(html);
var scriptNode = '<p>Source code modified</p>';
$('body').append(scriptNode);
fs.writeFile(__dirname + '/../public/index.html', $.html(), function (err) {
if (err) throw err;
console.log('It\'s modified!');
});
res.send($.html());
};
Как я могу сделать это в более «правильного» пути (возможно, с AJAX вызова)? Любые предложения были бы более чем приветствуются.
Я не очень понимаю, что вы пытаясь сделать. Если вы хотите обрабатывать JSON в качестве типа данных, то вы можете настроить другой конкретный маршрут, или вы можете отфильтровать тип запроса в текущем маршрутном обработчике: export.index = function (req, res) { var data = someData .fetch(); switch (req.format) { case 'json': res.json (data); break; по умолчанию: res.render ('шаблон', { данные: данные }); } }; –
Я просто хочу, чтобы маршрут изменения отправил scriptNode, так как приведенный выше код показывает клиенту index.html с AJAX, затем извлекает его и записывает в файл, не обновляя всю страницу. – giokokos
У вас должно быть 3 маршрута. 1. HTML-страница с формами и javascript на стороне клиента. 2. Маршрут, который будет возвращать scriptPage, вызывается с javascript на стороне клиента. 3. Маршрут для изменения версии serverSide на основе запроса на стороне клиента. Способ описания вашей проблемы показывает, что вы действительно не понимаете, как обращаться с маршрутами и клиентской/серверной стороной. Чтение экспресс-документации было бы полезно. –