【发布时间】:2020-03-26 12:34:55
【问题描述】:
我正在尝试使用 vanilla js Ajax 发送一个 POST 请求,我想在其中上传一个文件和一些 json 数据。
但我收到“内部服务器错误:500”且控制器参数为空值。
请帮助我。
我的 javascript 代码
var btnSubmit = document.getElementById("btn-submit");
btnSubmit.addEventListener("click", function () {
var formData = new FormData();
var fileElement = document.getElementById("WaterTankBlueprint");
formData.append("file", fileElement.files[0]);
var aquaFarm = {
Name: document.getElementById("Name").value,
Region: document.getElementById("Region").value,
CEO: document.getElementById("CEO").value
}
var aquaFarmViewModel = {
AquaFarm: aquaFarm,
WaterTankBlueprint: formData
};
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState === xhr.DONE) {
if (xhr.status === 200) {
}
}
};
xhr.open("POST", "/workplace/aqua-farm/add", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(aquaFarmViewModel));
});
我的视图模型
public class AquaFarmViewModel
{
public AquaFarm AquaFarm { get; set; }
public IFormFile WaterTankBlueprint { get; set; }
}
我的控制器
[HttpPost]
[Route("workplace/aqua-farm/add")]
public IActionResult AddAquaFarm([FromBody] AquaFarmViewModel viewModel)
{
// ...... code
return RedirectToAction("AquaFarm");
}
【问题讨论】: