首页 > 解决方案 > 如何从发送 JSON 数据的 AJAX 调用访问数据?

问题描述

我正在尝试使用 ajax 调用。我正在做的是通过 ajax 调用将对象列表传递给控制器​​。自动模型绑定工作正常,但我想做的是从输入流中手动读取 json 字符串,但我的解决方案不起作用。谢谢你。

$(document).ready(function () {

    var data = [{ Data1: "data1", Data2: 1, Data3: 41 },
    { Data1: "data2", Data2: 12, Data3: 42 },
    { Data1: "data3", Data2: 13, Data3: 43 }
    ];

    $("#PassList").click(function () {
        $.ajax({
            contentType: "application/json; charset=utf-8",
            dataType: 'html',
            type: 'POST',
            url: '/Home/PassList',
            data: JSON.stringify(data) ,
            success: function (data) {
                alert("Success passing List");
            },
            error: function (xhr, ajaxOptions, thrownError) {
                alert("failure");
            }
        });
    });
});

    [HttpPost]
    public ActionResult PassList(List<SampleData> SampleDatas, string NewData)
    {
        System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream);
        string line = "";
        line = sr.ReadToEnd();
        return View();
    }

标签: jqueryajaxasp.net-mvc

解决方案


默认模型绑定器工作正常,因为您设置:

contentType: "application/json; charset=utf-8",在你的ajax调用中。

要从输入流中手动读取 json 字符串,请在 ajax 中注释以下两行:

// contentType: "application/json; charset=utf-8",
// dataType: 'html',

在控制器方面,您将拥有:

public ActionResult PassList()
{
     System.IO.StreamReader sr = new System.IO.StreamReader(Request.InputStream);
     string line = "";
     line = sr.ReadToEnd();
     return View();
}

推荐阅读