c# - Json 返回表单 Controller 不工作

标签 c# jquery json asp.net-mvc

我需要从字符串中获取 json 对象并从 Controller 返回它。

在我的 Controller 中我有第二件事:

    [HttpGet]
    public JsonResult GetPageFilters()
    {
        ...
        ...

        if (settings != null)
        {
            var data = JsonConvert.DeserializeObject(settings.Filters); //Filter is string with json

            return Json(data);
        }
        else
        {
            return null;
        }            
    }

在我看来:

    var filterOption;

    $.get('Library/Books/GetPageFilters', null, function(data) {
        filterOption = data;
    }, "json");

Controller 被正常调用,字符串被反序列化为对象...但是 function(data) 不工作。那里什么也没有发生,我不明白为什么。

我错过了什么?

编辑:

看起来 string to json 出错了。 我试着将它保存在数据库中,我觉得看起来不错,但正确读取它对我来说是个问题。

function UpdateFilter() {

    var filterOption = {
        "filterTarget": "Books",
        "filters": [
            { "cancelled": $("#showCancelledFilter").is(':checked') },
            { "completed": $("#showAllFilter").is(':checked') }
        ],
        "page": page,
        "sorting": sorting
    };

    var url = "Library/Books/UpdateFilter";
    $.post(url, { pageFilters: JSON.stringify(filterOption) }, function (data) { });
}

似乎工作正常,但正如我已经说过的,由于某种原因,从字符串到 json 不正常。

最佳答案

您的方法标有[HttpGet],这意味着您需要将方法更改为

return Json(data, JsonRequestBehavior.AllowGet);

默认情况下,JsonRequestBehavior 设置为 DenyGet

您可以在 this question 的答案中阅读更多相关信息

关于c# - Json 返回表单 Controller 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32066896/

相关文章:

php - Google Flight RPC 和构建 JSON 数组

c# - 特殊字符不显示在带有参数的 SQL 数据库的 gridview 中

javascript - 解析 JSON 中的特定值以进行 ajax

javascript - 对 JSON 数组对象进行排序

javascript - JSON 通信破坏特殊字符

javascript - ColorBox 对照片进行分组

c# - 将下一个参数作为 String.Format 中的字段宽度

c# - Moq - 模拟泛型方法的正确设置

c# - 虚拟路径 '/' 映射到另一个应用程序,这是不允许的

javascript - 如何防止 iframe 中的链接在新标签页中打开