javascript ajax调用未命中控制器
本文关键字:控制器 ajax 调用 javascript | 更新日期: 2023-09-27 18:27:32
我正在尝试为Dropzone.js构建一个模拟文件列表。我有一个MVC控制器方法定义如下:
[HttpPost]
public async Task<JsonResult> GetImageInfo(int imageId)
{
//int imgId;
//int.TryParse(imageId, out imgId);
var image = await RepublikDb.PropertyImage.FindAsync(imageId);
var path = Server.MapPath(image.ImageURI);
var size = new FileInfo(path).Length;
var fileName = new FileInfo(path).Name;
var thumbnailURI = image.ThumbnailImage.ImageURI.TrimStart('~');
return Json(new { fileName = fileName, size = size, thumbnailURI = thumbnailURI });
}
我已经用Postman测试了这个端点,一切都按预期进行,但每次我尝试在JS中获取数据时,服务器都会返回500错误代码,并抱怨如下:异常详细信息:System.ArgumentException:参数字典包含不可为null类型"System.Int32"的参数"imageId"的null条目
以下是JS AJAX代码://从剃刀到JS的入口点。此处传递一个逗号分隔的字符串。例如,imageIds="10,12,14,16"
EditFormInit("@Model.PropertyImageIds")
var EditFormInit = function (imageIds) {
var imageIdsArr = imageIds.split(",");
var imageFiles = [];
imageIdsArr.forEach(function (ImageId) {
var requestData = { imageId: parseInt(ImageId) };
//var reqUrl = "?imageId=";
//reqUrl = reqUrl.concat(requestData.imageId.toString());
$.ajax({
type: "POST",
url: "/Admin/PropertyImage/GetImageInfo",
data: requestData,
contentType: "text/json; charset=utf-8",
dataType: "json",
success: function (data, status, jqXHR) {
var image = { fileName: data.fileName, size: data.size, thumbnail: data.thumbnailURI }
imageFiles.push(image);
}
});
});
尝试:
contentType: "application/json"
这应该工作
所以我终于意识到为什么控制器没有被击中,并解决了这个问题。$.ajax向控制器传递了一个JSON请求,但显然失败了。一旦我删除了有问题的行,控制器断点终于被击中了。
$.ajax({
type: "POST",
url: "/Admin/PropertyImage/GetImageInfo",
data: requestData,
success: function (data, status, jqXHR) {
var image = { fileName: data.fileName, size: data.size, thumbnail: data.thumbnailURI }
imageFiles.push(image);
}}
);
即使来自控制器的响应现在正在返回,imageFiles数组仍然为null。我在这里做错了什么?