为什么200 HTTP响应代码上的XmlHttpRequest readyState=2
Why XmlHttpRequest readyState = 2 on 200 HTTP response code
所以我使用纯javascript(无jquery)将文件发送到服务器。服务器脚本PHP在最后返回状态代码200,但javascript却变为readyState==2。
PHP代码发回状态代码200:
header('X-PHP-Response-Code: 200', true, 200);
exit;
javascript正在做:
request.onreadystatechange = function() {
if (request.readyState == 4) {
var message;
switch(request.status) {
case '200':
message = "Data uploaded successfully.";
break;
case '406':
message = "Incorrect file format. Please try again.";
break;
case '410':
message = "Unexpected error. Please contact support.";
break;
default:
break;
}
status_message_container.innerHTML = message;
submit_button.disabled = false;
}
else {
alert( "Unexpected error: " + this.statusText + ".'nPlease try again");
}
};
request.send(formData);
甚至知道HTTP200状态代码在前端返回正确(我得到"OK")。JS脚本看到readyState==2
(即else块总是命中)
我的理解是,200的服务器状态代码应该给出readyState == 4
??
首先,onreadystate
不只是发射一次。它被多次发射,你需要能够处理它。以下是您需要处理的代码:
0 UNSENT-尚未调用open()
1打开-尚未调用send()
2 HEADERS_RECEIVED-send()已被调用,标头和状态可用
3加载下载;-responseText保存部分数据
4-操作完成
您的代码正在readyState == 2
上的else块(已接收到标头)中,并假设这是错误状态,而事实并非如此。
错误检查应在request.readyState == 4
检查内。这样,请求就完成了,但也可能出现错误:
if (request.readyState == 4) {
switch(request.status) {
case '200':
message = "Data uploaded successfully.";
break;
// Error handling here
default: alert( "Unexpected error: " + this.statusText + ".'nPlease try again"); break;
}
}
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
相关文章:
- XMLHttpRequest未返回值-状态202
- XMLHttpRequest在移动设备上的chrome上不起作用
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 检查xmlhttprequest问题的消息
- 主线程上的同步XMLHttpRequest已弃用
- 如何定期发出xmlhttprequest
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 对象#<XMLHttpRequest>没有方法'完成'
- 在XMLHttpRequest之后重新初始化jQuery
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- Javascript XMLHttpRequest——只有第一个POST请求有效
- XMLHttpRequest - difference between Chrome & Firefox
- IE上的新XMLHttpRequest()出现JS Ajax未指定错误
- 非常简单的XMLHttpRequest不起作用
- 如何使用XMLHttpRequest下载文件
- XMLHttpRequest在$.ajax工作的地方给出了CORS错误
- XMLHttpRequest.open()AJAX中的参数url
- XMLHTTPRequest脚本中没有internet连接和超时
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作