【发布时间】:2021-10-21 10:11:07
【问题描述】:
你好,wenn 我想向我的控制器发送一个发布请求,但没有数据。 我试图记录我的 Json 文件并且有一些东西。但是当我发送发布请求时,我的控制器显示它是空的。
这是我的电话:
var item = {};
var jsonObj = [];
item["ProductCategoryId"] = i;
item["Name"] = txtName;
item["Description"] = txtDescription;
item["Price"] = txtPrice;
item["Stock"] = txtStock;
item["ProductCategory"] = txtProductCategory;
item["Image"] = await getAsByteArray(txtImage);
jsonObj.push(item);
var jsonString = JSON.stringify(jsonObj);
console.log("jsonString : " + jsonString);
$.ajax({
url: "/Admin/SaveProductToDB",
type: "POST",
data: { dataToSend: jsonString},
success: function (data) {
if (data.status == "Success") {
BootstrapDialog.show({
title: 'Success!',
message: "Data Updated Successfully!",
buttons: [{
label: 'OK',
action: function (dialog) {
window.location.href = "/Admin/Product";
removeProdData(i);
$("#btnAddProd").attr("disabled",false);
dialog.close();
}
}]
});
}
}
});
//Here I make a breakpoint but my string is empty
public JsonResult SaveProductToDB(string dataToSend)
{
List<Product> _List = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Product>>(dataToSend);
}
getAsByteArray
async function getAsByteArray(file) {
return new Uint8Array(await readFile(file))
}
function readFile(file) {
return new Promise((resolve, reject) => {
// Create file reader
let reader = new FileReader()
// Register event listeners
reader.addEventListener("loadend", e => resolve(e.target.result))
reader.addEventListener("error", reject)
// Read file
reader.readAsArrayBuffer(file)
})
}
我发现我是否删除了图像。然后控制器可以调整它的大小。感谢你目前的帮助。所以我需要看看这个问题所在的地方。
【问题讨论】:
-
前端代码看起来不错(假设
jsonString不为空),我猜问题出在后端 -
when I send the post request my controller shows it is empty- 你是怎么测试这个的?请添加相关控制器代码。还要在网络选项卡中验证请求是否发送成功,您甚至可以在该选项卡中看到正在发送的数据 -
/Admin/Product路径是相对的吗? (如/Admin/与此JS文件在同一文件夹中) -
控制器被调用,但控制器端的 dataToString 为空。在前端我看到 jsonString 不是空的。
标签: javascript ajax