【问题标题】:How to keep rendering data each time after ajax post?如何在ajax发布后每次保持渲染数据?
【发布时间】:2017-02-15 22:20:02
【问题描述】:

最近,我学会了处理渲染数据。但是我无法将发送的数据呈现到 node.js 中的 ejs 文件。我想使用发送的数据从服务器端嵌入javascript(或jade)构建我的html页面。所以在我的代码中,我将发送的数据保存在我的文件中,它工作得很好。但问题是渲染的数据保持不变,即使文件被更改。我想当我运行服务器时数据只更改一次,因为当我重新运行服务器时我的页面发生了变化。请分享您克服此类问题的技巧。

`enter code here`// ----- app.js
app.post('/notes' , function (req , res) {
    var fs = require('fs');
    var data = req.body;
    fs.writeFile("bucket.json" , JSON.stringify(data) , "utf8" , function (){});
});
// ---- routes/bucket
router.get('/', function(req, res, next) {
    var data = require('bucket.json');
    res.render('bucket', {movies:data});
});

【问题讨论】:

  • require 读取文件一次并缓存它。请改用fs.readFile。

标签: javascript ajax node.js express client-server


【解决方案1】:

模块在第一次加载后被缓存。见https://nodejs.org/api/modules.html#modules_caching

router.get('/', function(req, res, next) {
    fs.readFile('bucket.json', (err, data) => {
        if(err) {
            return next(err);
        }
        res.render('bucket', {movies:JSON.parese(data)});
    });
});

【讨论】:

  • 太棒了,就是这样。非常感谢。
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2017-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多