如何解决Laravel 7使用XMLHttpRequest上载的响应始终为空,即使网络检查器确实得到了它
在先前的Laravel 7项目中,我使用XMLHttpRequest()
成功上传了带有进度条的文件。现在,在需要该类似代码的分支项目中,XMLHttpRequest
始终将响应返回为null。怎么了?
这是upload.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
设为空?
这是响应:
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
之类的内容可能会包含一些额外的文字。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。