javascript - 使用Ajax和Nodejs更新页面上的数据

标签 javascript ajax express

我正在尝试编写一个循环来每 30 秒更新一次网页,但我不确定如何使用 setInverval 函数进行 ajax 调用。这是我的服务器代码:

var app = express()
app.get('/', function(req, res){
// error here
res.sendFile('./index.html',{root: __dirname})
//...Some data 
res.send(data)
});

我的index.html中有一个setInverval函数:

<script>
function ajaxCall(){
  $.ajax({url: "http://localhost:3000/", success: function(result){
    // I want to receive new result every 30 seconds
  }})

}
setInterval(ajaxCall,30000)
</script>

由于我不确定如何处理 app.get("/") 和 ajax 请求,所以我得到了

Error: Can't set headers after they are sent.

因为我尝试发送数据两次

我应该如何修改代码,以便可以看到我的数据显示在“http://localhost:3000/”上' 并且每 30 秒更新一次?

谢谢。

最佳答案

发送后无法设置 header 通常表示您对请求响应了两次

你不能这么做。

对于每个请求/req,应该只有一个响应/res

app.get('/', function(req, res) {
  // you respond to the request here
  res.sendFile('./index.html',{root: __dirname});
  // and you respond again here
  res.send(data)
});

决定是否要为该端点使用 sendFile()send(data)

从您的代码来看,您可能想要创建另一个端点,以进行 AJAX 调用,后者执行后者

// serve your index
app.get('/', function(req, res) {
  res.sendFile('./index.html',{root: __dirname})
});

// serve your data
// Your AJAX call should hit this endpoint instead
app.get('/data', function(req, res) {
  var data = 'lorem ipsum dolor';
  res.send(data);
});

关于javascript - 使用Ajax和Nodejs更新页面上的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44314807/

相关文章:

javascript - 为什么 db.findAll() 不是函数?

Javascript/Jquery 如何捕捉 CSS 类的使用

javascript - 从 Express 中调用内部 API

jquery - 您可以同时传递序列化的 ajax 数据和其他变量吗?

express - 如何在EJS模板中使用 block 继承

javascript - 如何基于作为参数传递的动态模式的 Mongoose 模型?

javascript - 无法使用 Cloud Code 找出 Parse Config

javascript - 部署网络应用程序时如何在 Google 应用程序脚本中创建警报消息?

javascript - 如何使用 Ajax 和 Jquery 每 2 秒动态更改页面标题? (火狐浏览器无法运行?)

php - 如何从ajax调用php函数?