针对ajax javascript、nodejs和expressjs多次发布

针对ajax javascript、nodejs和expressjs多次发布,javascript,ajax,node.js,Javascript,Ajax,Node.js,这是一个简单的待办事项列表,我想从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){

这是一个简单的待办事项列表,我想从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>
问题是大约每2分钟就会有相同的值再次发送到服务器,为什么会发生这种情况,以及如何防止这种情况发生?

我认为这是因为express挂起了请求,即使在您处理了请求之后,因为您没有发送响应。发送响应将从堆栈中删除请求,这种情况不应再发生

你解决这个问题了吗?我正在面对它too@a_rahmanshah我发现发送回复可以解决这个问题。@dezinezync是的!!将此作为答案发布:)
include index.html