Javascript 服务器XHR在JS中收到事件 情况:
目标API是外部的,不能以任何方式更改。我有一个JS客户端,它在客户端按钮单击时向API发送一些数据。差不多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
$.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时)。是的,排队系统可能是最好的解决方案。