服务器XHR在JS中收到了事件

时间:2014-02-20 10:37:17

标签: 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') {
        alert('Your Callback Request Sent!');
    } else {
        alert('Error occurred. Please try later.');long
    }
});

当我发送请求时,我必须等待从服务器接收响应以查看它是否成功并通知客户端是否存在。

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

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

1 个答案:

答案 0 :(得分:1)

  

是否可以触发类似“请求已到达服务器事件”的内容

不 - 客户不知道该事件。它只知道a)何时发送了请求的最后一位,b)何时收到了响应的第一位。两者之间没有任何东西可以等待。

XMLHttpRequest interface向{{3}}提供以下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.
  

所以我至少可以确定没有连接问题?

好吧,如果客户端可以检测到连接问题,您会收到通知。