【问题标题】:Getting JSON into my controller through AJAX: What am I missing?通过 AJAX 将 JSON 输入我的控制器:我错过了什么?
【发布时间】:2015-06-12 00:14:46
【问题描述】:

我有

    // fbi: Files batch info

    $.ajax({
        xhr: function() {
            var xhr = new window.XMLHttpRequest();
            return xhr;
        },
        type: 'POST',
        url: '@Url.Action("AddFilesToDB","FileUploadAsync")',
        data:  JSON.stringify(fbi),
        contentType: false,
        processData: false,
        success: function(retInfo) {
            console.log(JSON.stringify(retInfo));
        }
    });

如何引用 JSON.stringify 的结果,像这样的对象

'{org:"someOrganization",cat:"someCategory",fileNames:[somepic.jpg,somepaper.docx]'

从我的控制器内部

[HttpPost]
public async Task<JsonResult> addFilesToDB (???)
{
    ??? Want to use the value of data
}

我知道这可能是一个显而易见的问题,但我对这些东西很陌生

【问题讨论】:

  • 创建具有string Orgstring Catstring[] Filenames 属性的模型,以便模型与您的数据绑定。
  • 该模型类型的元素是否应该作为函数的参数?
  • @EdwardSnowden,那么方法就是public async Task&lt;JsonResult&gt; addFilesToDB (yourModel model)。另请注意,您不需要.stringify() - 只需data: fbi, 应该可以工作
  • 爱德华·斯诺登会知道这样的事>.>

标签: c# asp.net ajax json asp.net-mvc


【解决方案1】:

解决方法来了,先创建一个模型FileData

public class FileData
{
    public string org { get; set; }
    public string cat { get; set; }
    public string[] filenames { get; set; }    
}

然后创建如下图的动作——

public JsonResult PostFileData(FileData filedata)
{
     return Json("True");
}  

那么在视图中你的 JQuery 代码应该是 -

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script>
    $(function () {
        $("#btnSubmit").click(function () {
            var roles = ["somepic.jpg", "somepaper.docx"];

            var model = new Object();
            model.fileNames = roles;
            model.cat = "business";
            model.org = "news";

            jQuery.ajax({
                type: "POST",
                url: "@Url.Action("PostFileData", "Home")",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify({ filedata: model }),
                success: function (data) { alert(data); },
                failure: function (errMsg) {
                    alert(errMsg);
                }
            });
        });
    });
</script>

<input type="button" value="Click" id="btnSubmit" />

当你点击btnSubmit时,所有的值都会被发布到上面的动作中,并带有一个断点,它应该如下所示 -

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多