首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nodejs更新特定内容,而不是刷新整个页面

使用nodejs更新特定内容,而不是刷新整个页面
EN

Stack Overflow用户
提问于 2019-12-24 07:24:07
回答 1查看 45关注 0票数 0

我做了一个幸存的游戏,我试图在游戏结束后显示比分,img-1

我可以只添加新的路由器/游戏/分数,但我想留在同一页,只有在提交用户名后才更新分数内容。

这是我的PUG文件

代码语言:javascript
复制
  <form class="bottom-form" action="/travel?_put" method="post">
   <input type="text" class="input-timer" name="timer">
   <input type="text" class="input-name" name="username"  placeholder="What 
        is your name?" autocomplete="off" required>
   <button type="submit" class="input-button">         
    <span class="button-txt"> &#8594;</span>
   </button>
  </form>

.scoreboard 
        -var newScore= scores.sort((a, b) => (a.timer > b.timer ? -1 : 1))
        .rank-1 TOP 1 
        .username-1 #{newScore[0].username} 
        .score-1 #{newScore[0].timer} Sec
        .rank-2 TOP 2 
        .username-2 #{newScore[1].username}
        .score-2 #{newScore[1].timer} Sec
        .rank-3 TOP 3 
        .username-3 #{newScore[2].username}
        .score-3 #{newScore[2].timer} Sec
        .rank-4  
        .username-4 
        .score-4 

这是我的index.js文件。我使用mongodb和nodejs

代码语言:javascript
复制
/////setting up mongodb////////// 
mongoose
  .connect(url, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useFindAndModify: false
  })
  .then(() => console.log("============DB connection successful!=========="));

/////////route////////////////////
app.get("/travel", (req, res) => {
  Score.find({}, (err, score) => {
    if (err) {
      console.log(err);
    } else {
      res.render("game", { scores: score });
    }
  });
});
app.post("/travel", (req, res) => {
  const score = new Score({
    _id: new mongoose.Types.ObjectId(),
    username: req.body.username,
    timer: req.body.timer,
    timestamp: new Date()
  });
  Score.create(score, err => {
    if (err) {
      console.log(err);
    } else {
      console.log(score);
      res.status(204).send();
    }
  });
});
app.put("/travel", (req, res) => {
  Score.find({}, (err, score) => {
    if (err) {
      console.log(err);
    } else {
      res.send("game");
    }
  });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-24 08:02:39

您可以注册POST路由并从pug发出AJAX请求。也就是说。

index.js

代码语言:javascript
复制
app.post('/api/score', (req, res) => {
     // Get params from req, and make logic ...

     // Send data to front end
     res.json({
       message: 'Score updated'
     });
});

帕格

代码语言:javascript
复制
script(src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js')
script.
  $(document).ready(function(){
    $('.bottom-form').submit(function (e) {
    e.preventDefault();
    $.post({url: "/api/score", data, success: function(result){
     // Update score from here
      }});
    });
  });

我在这里使用了jQuery,但您可以使用普通的js或任何其他库来实现此目的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59462267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档