作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个循环来每 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/
我是一名优秀的程序员,十分优秀!