如何使用readyState判断XHR已发送到服务器
How can I tell XHR is sent to server using readyState?
这个问题与我之前的问题有关:READYSTATE_LOADED是否跨浏览器加载?
所以我知道readyState在浏览器之间是不可靠的。目前,我正在尝试在任何浏览器中进行概念验证。
我在我的插件中,有这样的代码:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
self._onComplete(id, xhr);
}
else if (xhr.readyState == 2 ){
self._onSent( id, xhr );
}
};
如果我记录回调,"send"会在"完成"之前立即触发,在我的服务器端脚本响应之后。我是不是误解了readyState 2是什么?我尝试了1次射门,但在服务器做出回应之前也没有开火。
我查看了xhr对象的上传对象,它至少有一个"进度"事件,但我仍然没有看到任何关于进度的信息。事实上,如果最后一次进度是97%,那么当文件完成发送到服务器时,它不会在100%时激发。因此,当服务器处理上传时,在readyState变为4之前,进度挂起97%。
这让用户认为上传停滞了,甚至认为它实际上一直在上升。
没有状态可以检查请求何时发送。
readyState
2意味着服务器已经响应,并且所有的头都已经进入。这是在请求的主体部分进入之前触发的。
您最好在发出send()
命令时激发自己的事件。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
self._onComplete(id, xhr);
}
else if (xhr.readyState == 2 ){
// Headers received
}
};
xhr.send(data)
self._onSend( id, xhr );
4.6状态
UNSENT(数值0)对象已被构造。
OPENED(数值1)open()方法已成功调用。在此状态下,可以使用设置请求标头setRequestHeader(),并且可以使用send()进行请求方法
HEADERS_RECEIVED(数值2)所有重定向(如果有)并且最终响应的所有HTTP标头收到。对象的几个响应成员现在可用。
LOADING(数值3)正在接收响应实体主体。
DONE(数值4)数据传输已完成或传输过程中出现问题(例如无限重定向)。
http://www.w3.org/TR/XMLHttpRequest/#states
编辑
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (xhr.readyState == 4){
self._onComplete(id, xhr);
}
else if (xhr.readyState == 2 ){
// Headers received
}
else if (xhr.readyState == 1 ){
// xhr.open() called
// You can set headers here amoung other things
xhr.send(data)
self._onSend( id, xhr );
}
};
xhr.open(method, url, async, user, password)
http://www.w3.org/TR/XMLHttpRequest/#the-打开方法
- 使用JSP从服务器检索和显示图像
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 客户端服务器REST API captcha实现
- 正在将base64 jpeg从input-type=file上传到服务器
- Webpack开发服务器和React服务器端渲染
- 提示使用服务器端事件处理程序激活JavaScript
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- jQuery blueimp文件上传:将N-1个文件上传到IE中的服务器
- 使用jasmine模拟对服务器的调用
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Winjs.xhr、Visual Studio和脱机服务器
- 如何使用readyState判断XHR已发送到服务器
- 使用 XHR 更新服务器文件并将选项添加到 html 选择
- XHR 请求上的 500 内部服务器错误
- 如何对远程服务器进行 XHR
- 执行 JS 服务器站点以生成 xhr 的哈希
- 服务器返回重定向(302)后,iOS设备上的AJAX或XHR请求失败,代码为0
- Dojo XHR don'根本不会向其他服务器发送请求,但jQuery中一切都正常
- Post表单字段+文件使用xhr,并重建服务器端