为什么我的AJAX请求返回空?

时间:2018-01-02 19:01:07

标签: javascript jquery node.js ajax response

我已经找到了什么:

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_EMPTY_RESPONSE

CODE:

客户端

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秒后,会记录“NO”并且应该发送“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_EMPTY_RESPONSE”作为错误消息,没有任何反应。

以下是我终端中注销的所有内容(服务器日志):

POST /1/2 - - ms - -
NO
POST /1/2 - - ms - -
NO

奇怪的是,似乎请求被多次触发,尽管我只调用了一次?

我甚至添加了一个加载计数器,以确保它只被调用一次,但它似乎被调用了两次。

如果只有一个AJAX请求并且实际从我的服务器获得正确的响应,我该怎么办?

1 个答案:

答案 0 :(得分:2)

错误描述有 - 空响应。您的服务器收到并记录了请求,但没有发送任何回报。浏览器可能会拒绝响应,例如CORS,但在这种情况下,我希望会出现不同的错误消息。

您是否有其他方法来测试网址,例如cUrl?我使用Fiddler来监控和操纵网络流量,这可能更容易。在重新访问客户端代码之前排除服务器。

相关问题