发布多次为ajax的javascript,nodejs,expressjs

它是一个简单的待办事项列表,我想尝试从JavaScript的Ajax。

app.js

var express=require('express'); var MongoClient=require('mongodb').MongoClient; var db; MongoClient.connect("mongodb://admin:pass@oceanic.mongohq.com:10070/todo",function(err,database){ if(!err){ console.log("We are connected"); db=database; } }); var app=express(); app.use(express.static(__dirname+'/views')); app.use(express.bodyParser()); app.use(express.logger('dev')); app.set('title','todo'); app.engine('jade',require('jade').__express); // for home page of the website app.get('/',function(req,res){ res.render(index); }); app.post('/additem',function(req,res){ db.collection('todo').insert({'item':req.body.item},function(err,result){ }); console.log(req.body.item); }); app.get('/list',function(req,res){ db.collection('todo').find().toArray(function(err,items){ res.send({'items':items}); }); }); var server = app.listen(3000,function(){ console.log("Listening on port %d",server.address().port); }); 

的index.html

 <html> <head> <script> function dataSend(e){ var listItem=document.getElementById('item').value; var xmlhttp; if(window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else{ xmlhttp=ActiveXObject("Microsoft.XMLHttp"); } xmlhttp.open('post','/additem',true); xmlhttp.setRequestHeader("Content-type","application/json;charset=UTF-8"); xmlhttp.send(JSON.stringify({"item":listItem})); } function receive(){ var xmlhttp; if(window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); } else{ xmlhttp=ActiveXObject("Microsoft.XMLHttp"); } xmlhttp.onload=function(){ var jlist=JSON.parse(xmlhttp.responseText); var arr=jlist.items; var parent=document.getElementById('items'); var node; for(var i=parent.children.length;i<arr.length;i++){ var li=document.createElement('li'); node=document.createTextNode(arr[i].item); li.appendChild(node); parent.appendChild(li); } } xmlhttp.open('get','/list',true); xmlhttp.send(); } </script> </head> <body> <div id="container"> <div id="input"> <input id="item" type="text"/> <input type="button" value="Add" onclick="dataSend()"/> </div> <div id="items"> <input type="button" value="current list" onclick="receive()"/> </div> </div> </body> </html> 

index.jade

 include index.html 

问题是每2分钟左右,相同的值再次发送到服务器,为什么它开始,以及如何防止这种情况? http://prntscr.com/3nae0e

我相信这是因为你不发表任何回应,所以即使在你处理完之后,也会挂在请求上。 发送一个响应消除堆栈的请求,这不应该发生。