javascript ajax调用未命中控制器 [英] javascript ajax call not not hitting controller

查看:78
本文介绍了javascript ajax调用未命中控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试建立一个模拟文件列表,以供Dropzone.js使用.我有一个MVC控制器方法定义如下:

I am trying to build up a list of mock files for Dropzone.js to consume. I have an MVC controller method defined as follows:

    [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:参数字典包含非空类型'System.Int32'的参数'imageId'的空条目

I have tested this endpoint with Postman, and everything works as expected, however each time I try and get the data in JS, the server returns a 500 error code, with complaints of the following: Exception Details: System.ArgumentException: The parameters dictionary contains a null entry for parameter 'imageId' of non-nullable type 'System.Int32'

这是JS AJAX代码: //从剃刀指向JS的入口.在此处传递逗号分隔的字符串.例如. imageIds ="10,12,14,16"

Here is the JS AJAX code: //Entry point to JS from razor. A comma separated string is passed here. Eg. 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"

这应该有效

这篇关于javascript ajax调用未命中控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆