Laravel 7 Upload with XMLHttpRequest响应始终为null,即使网络检查器确实得到了它



在之前的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或类似的东西。

最新更新