使用Express进行AJAX通话


                    

我试图用Express框架在服务器提供的静态HTML文件中动态附加HTML。 我已经找到了可以完全满足我需求的cheerio模块,但是我想知道是否有一种更便宜的方法来代替加载整个HTML并附加字符串来实现该系统。 </ p>

我搜索了有关AJAX以及如何与客户端通信的信息,但是我没有设法使其正常工作。 我在cheerio上使用的代码是:</ p>

  exports.modify = function(req,res){

   var html = fs.readFileSync(__ dirname +'/../public/index.html','utf8');
   var $ = cheerio.load(html);
   var scriptNode ='

已修改源代码</ p>';
   $('body')。append(scriptNode);

   fs.writeFile(__ dirname +'/../public/index.html',$ .html(),function(err){
     如果(err)抛出err;
     console.log('已被修改!');
     });

   res.send($。html());

};
</ code> </ pre>

我该如何以更“正确”的方式进行操作(也许通过AJAX调用)? 任何建议都将受到欢迎。</ p>
     </ div>

展开原文

原文

I am trying to append HTML dynamically with Express framework in a static HTML file that my server serves. I've found about the cheerio module that does exactly what I want, but I was wondering if there is a much cheaper way for the system instead of loading the whole HTML and appending a string.

I searched about AJAX and how to communicate with the client but I didn't manage to make it work. The code I am using with cheerio is:

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());

}; 

How can I do it in more 'proper' way (maybe with AJAX call)? Any suggestions would be more than welcome.

1个回答


假设您想将JSON作为数据类型处理,则可以设置其他特定路由,也可以在当前路由处理程序中过滤请求类型:</ p>

  exports.index = function(req,res){
   var data = someData.fetch();
   开关(要求格式){
     情况'json':
       res.json(数据);
       打破;
     默认:
       res.render('template',{
       数据:数据
     });
   }
};
</ code> </ pre>
     </ div>

展开原文

原文

Assuming you want to handle JSON as a data type then you can setup another specific route or you can filter the request type within the current route handler :

exports.index = function(req, res) {
  var data = someData.fetch();
  switch(req.format) {
    case 'json':
      res.json(data);
      break;
    default:
      res.render('template', {
      data:data
    });
  }
};

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐