2013-04-29 84 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