我已经看了:
Failed to load resource: net::ERR_EMPTY_RESPONSE http://test.com
Failed to load resource under Chrome
Failed to load resource: net::ERR_EMPTY_RESPONSE when console not opened
Failed to load resource: net::ERR_EMPTY_RESPONSE
错误:
未能加载资源:net::ERR\u EMPTY\u响应
代码:
客户
var load = 0;
$( document ).ready(function() {
if (load == 0) {
load++;
$.ajax({
type: "POST",
url: "/1/2",
data: someData,
}).done(function(response) {
console.log("RESPONSE :"+response);
if (response.charAt(0) == "F") {
localStorage.setItem("error_msg_local", response);
} else if (response.charAt(0) == "L") {
localStorage.setItem("success_msg_local",response);
} else {
localStorage.setItem("error_msg_local", "Internal error. Please try again.");
}
});
}
});
服务器
请求随POST一起发送,并将等待用户完成特定操作。如果用户什么也不做,120秒后会记录“否”,并发送“F”作为响应。
router.post("/2", function(req, res, next){
request.post({
url: 'URL:Port',
json: {
JsonData: JsonData,
timeout: "120000"
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
if (body.status == "success") {
//User completed action within 120 seconds, so do stuff
}
else {
//120 elapsed without user completing action, body.status == "nothing", so execute this:
console.log("NO");
res.send("F");
}
}
else {
console.log("ERROR: "+error);
}
});
});
问题:
我故意等待120秒来测试我的代码。客户端上没有任何记录,但服务器上没有记录“NO”,因此我知道res.send(“F”)应该作为响应发送。
然而,我在浏览器控制台中收到一条错误消息“加载资源失败:net::ERR\u EMPTY\u RESPONSE”,但什么也没有发生。
以下是在我的终端中注销的所有内容(服务器日志):
POST /1/2 - - ms - -
NO
POST /1/2 - - ms - -
NO
奇怪的是,虽然我只调用过一次,但请求似乎被触发了多次?
我甚至添加了一个负载计数器来确保它只被调用一次,但它似乎被调用了两次。
我应该怎样做才能只有一个AJAX请求,并从我的服务器获得正确的响应?