【问题标题】:AJAX call with Express使用 Express 进行 AJAX 调用
【发布时间】:2013-04-11 07:44:43
【问题描述】:

我正在尝试使用 Express 框架在我的服务器提供的静态 HTML 文件中动态附加 HTML。我发现了完全符合我要求的cheerio 模块,但我想知道系统是否有更便宜的方法,而不是加载整个HTML 并附加一个字符串。

我搜索了有关 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 作为数据类型处理,则可以设置另一个特定路由,或者可以在当前路由处理程序中过滤请求类型:exports.index = function(req, res) { var data = someData.fetch(); switch(req.format) { case 'json': res.json(data);休息;默认值:res.render('template', { data:data }); } };
  • 我只希望修改路由将上面代码显示的scriptNode通过AJAX发送到客户端index.html,然后获取它并将其写入文件,而不刷新整个页面。跨度>
  • 你必须有 3 条路线。 1. 带有表单和客户端 javascript 的 HTML 页面 2. 将返回 scriptPage 的路由,从客户端 javascript 调用 3. 根据客户端请求修改服务器端版本的路由。您描述问题的方式表明您并不真正了解应该如何处理路由和客户端/服务器端。阅读快速文档会很有用。
  • 你能给我看一个小例子让我更清楚吗?无论如何感谢您的回答!
  • 老实说不...我没有时间制作教程 + 有很多好的教程可供选择。

标签: javascript ajax node.js express


【解决方案1】:

假设您想将 JSON 作为一种数据类型处理,那么您可以设置另一个特定路由,或者您可以在当前路由处理程序中过滤请求类型:

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

【讨论】:

    猜你喜欢
    • 2017-02-09
    • 2015-07-22
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多