【问题标题】:Ajax call returning my HTML page instead of JsonResult?Ajax 调用返回我的 HTML 页面而不是 JsonResult?
【发布时间】:2021-01-30 11:14:49
【问题描述】:

(我正在使用 ASP.NET Core 剃须刀页面)我有一个 JsonResult 方法:

public JsonResult OnPostloadListJson()
        {
            vwOpenRequests = _context.vwOpenRequests.ToList();
            return new JsonResult(vwOpenRequests);

            //var items = _context.vwOpenRequests.ToList();
            //IList<vwOpenRequest> resultList = new List<vwOpenRequest>();
            //for (int i = 0; i < items.Count(); i++)
            //{
            //    resultList.Add(items[i]);
            //}
            //return new JsonResult(resultList);
        }

我需要通过 ajax 调用来获取 DataTable:

$(document).ready(function () {
        $('#mytable').DataTable({
            processing: true,
            serverSide: true,
            ajax: {
                //url: "?handler=loadListJson",
                url: "@Url.Page("/Index")?handler=loadListJson",
                type: "POST",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("RequestVerificationToken",
                        $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                error: function (xhr, status, error) {
                    alert(error);
                }
            },
            columns: [
                { data: "RequestTo" },
                { data: "SubGroup" },
                { data: "RequestDt" },
                { data: "DueDt" },
                { data: "Desc" },
                { data: "Reason" },
                { data: "LastUpdateDt" },
                { data: "RequestType" }
            ]
    });
});

这会导致此错误:“SyntaxError: Unexpected token

我的表格包含带有标题的 和 元素,它们的列数与我尝试拉出的列数相同。我已经在我的 JsonResult 方法中添加了一个断点,并且在抛出错误之前它没有命中它,即使我的处理程序和 url 已正确命名。我在这里错过了什么?

【问题讨论】:

  • 通过浏览器开发工具检查请求链接是否正确,然后尝试@Url.Page("/Index", "loadListJson")

标签: json ajax asp.net-core datatable razor-pages


【解决方案1】:

我测试了你的代码,出现了和你一样的问题。经过测试,我发现你的代码存在三个问题。

1:路由

在您的帖子操作中,您的方法应该是OnPostLoadListJson而不是OnPostloadListJsonl应该大写。

在你的ajax中,url应该是url: "?handler=loadListJson",

2:修改你的post方法如下:

  public  JsonResult OnPostLoadListJson()
    {
      vwOpenRequests = _context.vwOpenRequests.ToList();

      return new JsonResult(new { data = vwOpenRequests });
    }

3: ajax 中的列应该是:

columns: [
            { data: "requestTo" },
            { data: "subGroup" },
            { data: "requestDt" },
            { data: "dueDt" },
            { data: "desc" },
            { data: "reason" },
            { data: "lastUpdateDt" },
            { data: "requestType" }
        ]

数据的第一个字母应该是小写的。

结果:

【讨论】:

  • 你是救生员!感谢您的帮助!
猜你喜欢
  • 2011-08-03
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 2022-03-07
  • 1970-01-01
  • 2021-06-02
  • 2018-08-27
  • 1970-01-01
相关资源
最近更新 更多