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

Javascript 使用Ajax和Nodejs更新页面上的数据,javascript,ajax,express,Javascript,Ajax,Express,我试图写一个循环,每30秒更新一个网页,但我不知道如何使用setinvval函数进行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函数: <scrip

我试图写一个循环,每30秒更新一个网页,但我不知道如何使用setinvval函数进行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>
因为我试过两次发送数据

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


谢谢。

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

你不能那样做

对于每个
请求
/
请求
只能有一个
响应
/
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()
发送(数据)

从您的代码判断,您可能希望创建另一个端点,以使用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);
});

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

你不能那样做

对于每个
请求
/
请求
只能有一个
响应
/
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()
发送(数据)

从您的代码判断,您可能希望创建另一个端点,以使用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);
});

正如Nicholas Kyriakides所说,您需要定义以下内容:

// 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);
});
然后,您需要更改AJAX调用:

<script>
function ajaxCall(){
  $.ajax({url: "http://localhost:3000/data", success: function(result){
    //do whatever you want with the returned data (in result)
    //f.e. to update something on your web page, you want something like:
    document.getElementById("idOfElementYouWantChanged").innerHTML = result;
  }})

}
setInterval(ajaxCall,30000)
</script>

函数ajaxCall(){
$.ajax({url:http://localhost:3000/data,成功:函数(结果){
//对返回的数据(结果中)执行任何操作
//f、 e.要更新网页上的内容,您需要以下内容:
document.getElementById(“idOfElementYouWantChanged”).innerHTML=result;
}})
}
设置间隔(ajaxCall,30000)

正如尼古拉斯·基里亚基德斯(Nicholas Kyriakides)所说,您需要定义以下内容:

// 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);
});
然后,您需要更改AJAX调用:

<script>
function ajaxCall(){
  $.ajax({url: "http://localhost:3000/data", success: function(result){
    //do whatever you want with the returned data (in result)
    //f.e. to update something on your web page, you want something like:
    document.getElementById("idOfElementYouWantChanged").innerHTML = result;
  }})

}
setInterval(ajaxCall,30000)
</script>

函数ajaxCall(){
$.ajax({url:http://localhost:3000/data,成功:函数(结果){
//对返回的数据(结果中)执行任何操作
//f、 e.要更新网页上的内容,您需要以下内容:
document.getElementById(“idOfElementYouWantChanged”).innerHTML=result;
}})
}
设置间隔(ajaxCall,30000)

谢谢我知道这是个问题。如果我想发送数据并删除sendFile(),我的网页将在每次刷新时更新,但永远不会调用setInterval函数。谢谢,我知道这是个问题。如果我想发送数据并删除sendFile(),我的网页将在每次刷新时更新,但setInterval函数将永远不会被调用。除了获得一些神奇的互联网点,公然复制/粘贴我的答案有什么好处?当我看到你也回答时,我已经回答了,看起来他仍然不理解这个概念,所以我想给他举个完整的例子。如果我伤害了你的“神奇互联网点”感觉,我很抱歉。我只是来帮忙的。两个答案都有帮助,Ajax调用部分起到了作用,但是因为nicholas先回答了…没问题,就像我说的,我当然不在乎:)祝你工作顺利!除了获得一些神奇的互联网积分外,公然复制/粘贴我的答案有什么好处?当我看到你也回答时,我已经在回答了,看起来他仍然不理解这个概念,所以我想给他一个完整的例子。如果我伤害了你的“神奇互联网点”感觉,我很抱歉。我只是来帮忙的。两个答案都有帮助,Ajax调用部分起到了作用,但是因为nicholas先回答了…没问题,就像我说的,我当然不在乎:)祝你工作顺利!