在此先感謝您的幫助!我正在使用(以及超新的)JavaScript,使用express的node.js和sqlite3。我試圖做一個AJAX請求來獲取已發佈到聊天室網頁中的所有郵件的列表:用的setTimeout取代的setInterval
var meta = document.querySelector('meta[name=roomName]');
var roomName = meta.content;
window.addEventListener('load', function(){
var intervalID = setInterval(updateMessages, 4000);
}, false);
function updateMessages() {
var req = new XMLHttpRequest();
req.open('GET', '/' + roomName + '/messages.json', true);
req.send();
document.getElementById('messages').innerHTML = req.responseText;
}
兩個問題:1,我認爲我應該使用的setTimeout代替的setInterval的。我將如何去切換到使用這種方法? 2.下面的服務器端代碼是否與上面的代碼對應?如何訪問此請求後返回的數據?
app.get('/:roomName/messages.json', function(request, response){
var roomName = request.params.roomName;
var sql = "SELECT ALL body FROM messages where room="+roomName+";";
conn.query(sql, function(error, result) {
if(error) {
console.log("There was an error.");
}
response.send(result);
});
});
首先,您應該使用ajax而不是sjax。並且您有SQL注入問題 – Bergi 2013-03-17 20:05:54
您有一個SQL注入漏洞。 – SLaks 2013-03-17 20:06:50
的間隔是一個投票權的做法,但不是一個很好的解決方案。由於您有一個Node後端,您可以輕鬆設置WebSockets,以便與客戶端高效地進行通信。看看http://socket.io/ – duckbox 2013-03-17 20:08:51