javascript - 如果服务器不读取内容而是发送响应,则 XMLHttpRequest 发布文件失败(即使使用代码 200)
问题描述
我正在使用以下代码将文件从表单发送到服务器:
const request = new XMLHttpRequest();
const formElement = document.getElementById('form');
request.upload.addEventListener("progress", (e) => {
console.log("progress: " + e.loaded + "/" + e.total);
});
// request load handler (transfer complete)
request.addEventListener("load", function (e) {
console.log(e);
});
request.addEventListener("readystatechange", function (e) {
console.log(e);
});
// request error handler
request.addEventListener("error", function (e) {
console.log(e, request)
});
request.open("post", formElement.action);
request.responseType = "json";
request.send(new FormData(formElement));
在某些情况下,服务器可能会在读取文件内容之前做出响应,我想获得该响应并在客户端处理它。
但似乎我只触发了一个错误事件(响应状态为 0,json 类型的空状态文本),以及 2 个 readystatechange 事件,readystate 1 和 readystate 4(相同的空响应)。如果服务器只是返回响应而不读取内容。
在浏览器的开发工具中查看 POST 请求时,我也没有看到任何响应(F12-> 网络选项卡-> 响应)
使用 curl ( curl -i -X POST -H "Content-Type: multipart/form-data" -F "data=blabla" localhost:5000/upload
) 我可以发布并获得预期的响应,但不能使用 XMLHttpRequest。
关于我做错了什么的任何想法?
解决方案
推荐阅读
- c# - radgridview (telerik winforms) 接受数字
- .net - 无服务器:在部署之前运行测试
- python-3.x - Python网络抓取文本,垂直打印
- r - Unix 运行命令没有为 R 脚本生成日志
- python - keras Tokenizer 在整个数据帧上的使用
- backup - 我可以从备份 DAT 文件中恢复设置密钥吗?
- python - 在自动地图上定义关系的问题
- node.js - 在 Electron 应用程序中运行多个 nodejs 服务器
- node.js - 没有从 react.js 调用 Express API
- r - 非 equi 连接不保留原始列值