它是一个简单的待办事项列表,我想在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
答案 0 :(得分:1)
我相信这是因为明确挂在请求上,即使您已经处理过,因为您没有发出回复。发送响应将从堆栈中删除请求,这应该不再发生。