【问题标题】:How to get a json result/response at View如何在 View 中获取 json 结果/响应
【发布时间】:2018-04-24 18:20:33
【问题描述】:

我一直试图从我的控制器获得对我的视图的响应,但我得到的只是普通的 JSOn 显示(Firefox:附加图像)或提示下载 json 文件。我尝试了很多方法。有人请给我看或给我代码,以便我至少可以看到成功并至少可以显示警报

 public JsonResult GetGata()
    {
        List<ProdVM > pvl = new List<ProdVM>();
        try
        { 
            ProdVM pvm1 = new ProdVM();
            pvm1.ProductID = 1;
            pvm1.ProductName = "Computer";
            pvl.Add(pvm1);
            return Json(pvl, JsonRequestBehavior.AllowGet);
            }

        catch (Exception)
        {
            throw;
        }
    }
$(document).ready(function () {
$(document).ready(function () {
    $('#myGrid').DataTable({
        "ajax": {
            "url": "/Home/GetGata/",
            "dataSrc": ""
        },
        "columns": [
        { "data": "ProductName" },
        { "data": "ProductID" }
        ]
    });
});

});

【问题讨论】:

    标签: json ajax asp.net-mvc datatable


    【解决方案1】:

    datatable 插件期望 ajax 端点以这种格式返回数据

    {"data":[["1","Computer"],["2","Camera"]]}
    

    可以看到,每个item都是一个数组(一个字符串数组,其中每个字符串item都是属性值)

    这应该可以工作

    public ActionResult GetData()
    {
        var items = new List<string[]>
        {
            new string[] {"1", "Computer"},
            new string[] {"2", "Camera"}
        };
        return Json(new { data = items }, JsonRequestBehavior.AllowGet);
    }
    

    假设您的页面中有这样的表格,这应该可以工作

    <table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Id</th>
                <th>Name</th>
            </tr>
        </thead>
    </table>
    

    以及调用端点获取数据并用于数据表的js代码

    $(function() {
        $('#example').DataTable( {
            "ajax": "@Url.Action("GetData")"
        } );
    });
    

    【讨论】:

    • 感谢您的回答。但是,我仍然收到与页面相同的错误。 Firefox 只显示 json 值和 IE 提示下载 JSON。请有人帮助我。我被困在这里,无法练习或学习任何关于来自 .net 控制器的 json 响应的内容,我在 Success 处获得响应并在 html 处显示。请有人看到这种情况,请帮助我。
    • 当您运行页面时,您会收到警告吗?如果您尝试直接访问端点,您可能会收到基于浏览器设置的错误。尝试使用 postman/fiddler/advanced rest client chrome plugin 之类的东西访问端点
    • 我可以在 Postman 获得 Json 结果。但我需要在 .cshtml (查看文件)中获取它。我正在通过 localhost 访问 url。并且它需要在开发模式上工作,以便我尝试所有示例以用于学习目的。请给我一个 Hello world 类型示例,您可以在 Visual Studio 的本地主机上看到,其中响应来自控制器的 JsonResult 返回类型,并且您的 jquer 的成功可以在警报中捕捉到它???
    • 您是否按原样尝试了我在上面发布的代码?当您渲染该视图时,它应该可以工作。你有什么问题?
    • 是的,我尝试了你上面的代码,发现同样的问题:firefox 的纯 json 结果和 IE 有提示下载
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多