2014-11-22 70 views
1

我正在嘗試使瀏覽器/計算機之間工作的基本計數器。 (我是新來的)。該按鈕只能工作大約1/12時間。我如何使它更一致?按鈕更新node.js和HTML

謝謝!

我的服務器端node.js的樣子:

var express = require('express'); 
var app = express(); 
var hits = 0; 

app.get('/main.html', function (req, res, next) { 
    console.log('bye'); 
    next(); 
}); 

app.get('/', function (req, res, next) { 
    console.log('hello'); 
    next(); 
}); 

app.get('/add', function (req, res) { 
    console.log('added hits'); 
    hits++; 
}); 

app.get('/hitNum', function (req, res) { 
    console.log('hits req'); 
    res.end(hits+''); 
}); 

app.use(express.static(__dirname + '/public')); 

var server = app.listen(80); 

我的HTML看起來像:

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>  
     <script> 
      var add = function() { 
       $.get('add'); 
      } 

      window.setInterval(function(){ 
       $.get('hitNum').done(function (data){ 
        document.getElementById('hits').innerText = data; 
       }); 
      }, 500); 

     </script> 
    </head> 
    <body> 
     <button onclick='add()' >Hi</button> 
     <p id='hits'></p> 
    </body> 
</html> 

回答

1

我會通過改變/hitNum控制器啓動:而不是隻調用end()最好是明確設置狀態和正文(分別通過status()send())。以下是我會寫:

app.get('/hitNum', function (req, res) { 
    console.log('hits req'); 
    res.status(200).send('' + hits); 
}); 

200狀態顯示「成功」。

一兩件事:

/add控制器不發送任何響應返回。這意味着你的JS將不知道/當/add請求已完成:

app.get('/add', function (req, res) { 
    console.log('added hits'); 
    hits++; 
    res.status(200).end(); 
}); 
+0

它的工作原理!非常感謝! – Bluedog111 2014-11-23 00:13:32