我在前端运行一个带有ajax的脚本(通过“get”方法,路径位于“/ get?time =”),尝试从nodejs代码中的后端获取数据。但程序停在“res.send()”。然后在前面没有回应。任何人都可以提出任何解决方案吗?提前谢谢。
前端
var config = {
apiKey: "AIzaSyAUUcpvcottIkYXfpwAZfT4axxxxxxxxxx",
authDomain: "test-9caab.firebaseapp.com",
databaseURL: "https://test-9xxxx.firebaseio.com",
projectId: "test-9xxxx",
storageBucket: "test-9xxxxappspot.com",
messagingSenderId: "1280039xxxxxx"
};
firebase.initializeApp(config);
function get(){
var req = new XMLHttpRequest();
req.open("get","/get?time="+time);
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
req.onload = function(){
var data = JSON.parse(req.responseText);
show(data);
};
req.send();
}
function show(data){
var list = document.getElementById("list");
list.innerHTML="";
for(var i=0; i<data.length; i++){
list.innerHTML=data[i].time.bold()+"<br/>"+data[i].temp+"<br/>"+data[i].humid+""+"<hr/>"+list.innerHTML;
time =data[i].time+1;
}
}
var time=0;
window.onload = function(){
get();
window.setInterval(get, 10000);
}
后端
app.use(express.static("public"));
app.get("/get", function (req, res) {
var time = req.query.time;
info.orderByChild("time").startAt(time).once("value",function(snapshot){
var total = snapshot.numChildren();
var messages =[];
snapshot.forEach(function(itemSnapshot){
messages.push(itemSnapshot.val());
if(messages.length >=total){
res.json(messages);
}
})
});
});
并在服务器启动并运行时使用localhost:5438 / N01_index.html在Chrome上运行。
然后我在控制台上收到错误消息
N01_index.html:45 GET http://localhost:5438/get?time=0 net::ERR_CONNECTION_REFUSED
Failed to load resource: net::ERR_EMPTY_RESPONSE get?time=0
答案 0 :(得分:0)
如果来自forEach
的messages.lengthif条件,您的脚本不会发送任何内容,并将res.json(message)
放在forEach之外。在这种情况下,如果消息为空,则前端接收空数组
答案 1 :(得分:0)
感谢您的回复。我意识到前端剂量不能从后端获取任何数据。我修改了下面第2和第3行的前端。问题就解决了。
app.get("/get", function (req, res) {
var time = parseInt(req.query.time);
var info = firebase.database().ref('/info');
info.orderByChild("time").startAt(time).once("value",function(snapshot){
var total = snapshot.numChildren();
console.log("total= ",total);
var messages =[];
snapshot.forEach(function(itemSnapshot){
messages.push(itemSnapshot.val());
console.log(messages);
if(messages.length >=total){
res.json(messages);
}
})
});
});