Javascript 服务器XHR在JS中收到事件 情况:

Javascript 服务器XHR在JS中收到事件 情况:,javascript,jquery,ajax,xmlhttprequest,Javascript,Jquery,Ajax,Xmlhttprequest,目标API是外部的,不能以任何方式更改。我有一个JS客户端,它在客户端按钮单击时向API发送一些数据。差不多 $.ajax({ type: "POST", url: "http://api.url/some_resource", data: {name: 'John', email: 'john@john.com'} }).done(function(msg) { if (msg === 'ok') { al

目标API是外部的,不能以任何方式更改。我有一个JS客户端,它在客户端按钮单击时向API发送一些数据。差不多

$.ajax({
    type: "POST",
    url: "http://api.url/some_resource",
    data: {name: 'John', email: 'john@john.com'}
}).done(function(msg) {
    if (msg === 'ok') {
        alert('Your Callback Request Sent!');
    } else {
        alert('Error occurred. Please try later.');long
    }
});
当我发送请求时,我必须等待从服务器接收响应,以查看是否成功,并通知客户机是否成功

问题是,我认为API速度非常慢,不会直接回复它已收到所有内容并将处理请求,而是尝试完成所有工作,如发送电子邮件,然后才回复。有时需要大约20秒才能收到响应(XHR请求响应)

有没有可能(jQuery或纯JS)触发类似“请求到达服务器事件”的事件,这样我至少可以确定没有连接问题

是否可以触发“请求到达服务器事件”之类的事件

否-客户端不知道该事件。它只知道a)何时发送了请求的最后一位,b)何时接收到响应的第一位。在这两者之间没有什么,只有等待

到,有以下可用的
readyState
信息:

Val State            Description
---------------------------------------------------------------------------------
0   UNSENT           open()has not been called yet.
1   OPENED           send()has not been called yet.
2   HEADERS_RECEIVED send() has been called, and headers and status are available
3   LOADING          Downloading; responseText holds partial data.
4   DONE             The operation is complete.
所以我至少可以确定没有连接问题

好的,如果存在客户端可以检测到的连接问题,您会得到通知。

通过“客户端可以检测”您的意思是它甚至无法完成发送部分?据我所知,
header\u接收的
是在输出开始时发送的,就在加载之前,所以这可能没用?对于这个问题,您推荐什么样的客户端(用户)友好型解决方案?正如我所看到的,只有当你创建自己的后端代理时,它才有可能在收到请求并尝试发送请求后回复,就像队列系统一样。我指的是“超时”或“意外TCP套接字关闭”。是的,
HEADERS\u RECEIVED
可能是无用的,它只会对大型响应主体产生影响(或者当服务器
flush()
ed HEADERS时)。是的,排队系统可能是最好的解决方案。