【问题标题】:Node - Ajax request restarts once there is no response节点 - 一旦没有响应,Ajax 请求就会重新启动
【发布时间】:2016-04-11 21:56:23
【问题描述】:

这里我有一个 ajax 请求:

function send(){
    document.getElementById('result');
     $.ajax({
        method: "POST",
        url: "/processdata",
        data: mainData, 
        success: function(res){
            $("#result").text(res);
        }   
    });
}

HTML:

<br><br><input type = "button" onclick ="send" value = "Post">

我的节点服务器接收良好,响应也完成了它需要做的事情。

问题是,在我编写代码时,我到了不想发送响应的地步。我的代码中有一个很长的过程,而且很多次 修改一个模块的成本没有到达终点, 所以没有回应 - 没关系, 因为我只需要阅读 Node 的控制台。

但是一旦没有响应并且大约一分钟过去了 在我的节点执行堆栈中没有任何反应, ajax 请求由于某种原因再次发送,我的整个代码再次发生。这会干扰我阅读控制台中刚刚发生的事情。 我怀疑这可能与我使用的名为 request 的模块有关,该模块下载文件。但我不确定。

另外,我担心我不完全理解 ajax 和节点 - 在什么可能的情况下请求会重新启动,如果没有人真正再次发送它,会再次发送它自己?

【问题讨论】:

    标签: javascript jquery ajax node.js


    【解决方案1】:

    首先,您可以将调试器附加到节点,然后设置断点,这样您可以在读取(并检查)控制台时停止它的运行。

    其次,您可以使用 chrome 的开发工具 (F12) 来中断对 XHR 请求的 javascript 执行。这可以通过转到开发工具中的Sources 并单击右侧XHR Breakpoint 旁边的+ 来完成。

    最后,一些库会自动重新请求,但您使用的 jQuery 的 ajax 调用不会,因此重新请求是从代码中的其他地方发生的。

    【讨论】:

    • 我刚刚尝试了 Chrome 检查,它并没有真正告诉我任何信息 - 而且重启也没有发生。它确实在控制台上向我展示了一些奇怪的东西,尽管一旦我完成了所有剩余的“调用下一个函数” - localhost:3000/processdata net::ERR_EMPTY_RESPONSE 。它不应该显示任何响应,这就是为什么它很奇怪。
    • 为什么不从服务器返回错误响应?这样,客户端也不会坐等响应,而是可以向用户显示消息
    • 但也许它也会导致重启。无论如何,我现在正在开发,所以我不担心客户,所以我也可以不发送响应,因为我只是让我的代码在中间打开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2020-10-20
    • 2016-10-19
    • 2011-01-16
    相关资源
    最近更新 更多