2013-04-29 82 views
4

我想实现一个简单的AJAX GET请求。该请求告诉服务器删除数据库中的文档。虽然我从服务器获得文档被删除的确认信息,但Chrome Inspector显示请求处于“挂起”状态,最终导致服务器错误。简单的AJAX获取请求是“正在等待”

我在做什么不正确?

HTML

<div class="delete-note"> 
    <a href="#"><i class="icon-minus-sign"></i></a> 
</div> 

JS

$('.delete-note').click(function(e) { 
    var url = '/docs/' + doc_id + '/note_destroy/' + note_id; 
    $.ajax({ 
    type: "GET", 
    url: url, 
    cache: false, 
    }); 
    e.preventDefault(); 
}); 

编辑:包括服务器端代码:

节点/快递

exports.note_destroy = function(req, res) { 
    Doc.findOne({ doc_id : req.params.doc_id }, function(err, data) { 
    if (err) throw (err); 
    note_id = req.params.note_id; 
    data.notes.id(note_id).remove(); 
    data.save(function(err) { 
     if (err) throw (err); 
     console.log('note ' + note_id + 'is removed.'); 
    }); 
    }); 
}; 
+8

这是挑剔的,但如果请求是要删除的东西,POST或DELETE请求会比GET更合适。 – gbtimmon 2013-04-29 17:51:42

+1

我猜这个问题是服务器端,请求没有关闭,所有? – adeneo 2013-04-29 17:52:14

+0

什么/您在哪里看到服务器确认? – 2013-04-29 17:53:24

回答

7

您的服务器端函数不会写任何响应,因此浏览器会无限期地等待它。尝试写一个响应,可能带有一些客户端可以检查的状态码,以判断删除是否有效。像...

res.writeHead(200, { 'Content-Type': 'application/json' }); 
res.write(JSON.stringify({ status: OK })); 
res.end(); 
+0

完美,正是我所期待的。我不同寻常地打电话给一个网页,这个网页已经关闭并做了一些冗长的处理,所以被卡住为“待定”。现在,我得到网页写回应的内容(包括Response.End()),并启动后台线程来完成耗时的工作。没有更多的“待定”网页问题! – 2014-02-21 10:35:40