在之前的Laravel 7项目中,我使用XMLHttpRequest()
成功上传了一个带有进度条的文件。现在,在我需要类似代码的分叉项目中,XMLHttpRequest
总是将响应返回为null。出了什么问题?
这是上传.js的部分:
function upload(params...){
var data = new FormData();
var request = new XMLHttpRequest();
request.responseType = "json";
request.onload = function() {
console.log(`Loaded: ${request.status} ${request.response}`);//request.response IS ALWAYS NULL but the status is 200, statusText = 'OK' and readyState = 4.
};
request.open("post",url);
request.send(data);
}
这是相应的uploadController.php,它发回响应:
if($fileUploaded){
return response()->json(
[
'message'=>'File uploaded successfully 👍🏽',
'filename'=>$fileUploaded,
]
);
}
备注:
- 文件已正确上传并在数据库中注册
- 如果我将
request.responseType = "json";
更改为其他任何内容,则响应将不再为null,但我会得到XML格式的响应
为什么request.response
为null?
这是回应:
XMLHttpRequest { onreadystatechange: null, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, responseURL: "http://myApp.local/upload", status: 200, statusText: "OK", responseType: "json", response: null }
如果我检查网络,the uploadController.php
确实会得到json响应。然而,从javascript的角度来看,它是null。为什么?有人能透露一些信息吗?
解决了伙计们,谢谢你们。我的坏。。。我忘记了代码中留下的一些var_dump((,它们导致request.response
变成null
。
伙计,你已经检查过后端是否在打印信息了吗?
也许您忘记对dd()
或var_dump()
函数进行注释了。
使用";检查元件";工具。就在";网络";选项卡,检查响应。可能有一些额外的文本直接来自var_dump
或类似的东西。