【问题标题】:Sending data from NodeJS to the client by using Ajax calls使用 Ajax 调用将数据从 NodeJS 发送到客户端
【发布时间】:2017-11-27 14:59:56
【问题描述】:

我通过运行 Ajax 调用来增加服务器上的值,并希望在执行此操作后更新我的 UI

function increaseHitpoints(){
  $.ajax({
    type: 'GET',
    url: 'http://localhost:8888/incHp/2312'
  }).done(function (data) {
    $("#txtHitpoints").html(data);
  });
}

在我的 app.js 中,我读取了一个 JSON 文件,操作该值,将其写回文件并将其返回给客户端

app.get('/incHp/:id', function (req, res) {
  var database = './database.json';
  fs.readFile(database, 'utf8', function (err, data) { // read the data
      var json = JSON.parse(data);
      var users = json.users;
      var hitpoints;
      users.find(u => {
          if (u.id === Number(req.params.id)) { // get the user by id
            u.hitpoints++;
            hitpoints = u.hitpoints;
          }
      });
      json = JSON.stringify(json);
      fs.writeFile(database, json, (err) => { // update the JSON file

           // -> missing part here <-

      });
  });
});

如果我想返回新值,我必须将什么传递给缺失的部分?新值将是 hitpoints

我试过res.send(hitpoints);,但似乎这个函数想要返回一个状态码,而不是一个值。

【问题讨论】:

    标签: javascript jquery node.js ajax express


    【解决方案1】:

    如果您发送一个数值,它将被视为 HTTP 响应代码 https://expressjs.com/en/api.html#res

    但你可以将你的生命值作为字符串res.send(hitpoints.toString())或json res.send({hits: hitpoints});发送

    【讨论】:

      【解决方案2】:

      取决于您希望回复的格式。我更喜欢使用 JSON。所以在 JSON 的情况下,你会这样做:

      fs.writeFile(database, json, (err) => { 
        res.status(200).json({yourKey: yourValue});
      });
      

      然后你就可以在你的前端访问 JSON 对象了:

      $("#txtHitpoints").html(data.yourKey);
      

      【讨论】:

        猜你喜欢
        • 2020-06-22
        • 2013-08-13
        • 2020-02-28
        • 2019-04-17
        • 2020-08-17
        • 2012-12-15
        • 2021-10-07
        • 2023-03-27
        • 2022-01-12
        相关资源
        最近更新 更多