gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:11:33 24 4
gpt4 key购买 nike

我正在尝试编写一个循环来每 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com