You need to enable JavaScript to run this app. Razor Pages中DataTables Ajax加载返回JSON报Invalid JSON错误
优惠活动
大模型
产品
解决方案
定价
更多

Razor Pages中DataTables Ajax加载返回JSON报Invalid JSON错误

故障原因与修复指引

这个报错本质是前端没有收到符合DataTables服务端模式要求的合法JSON响应,结合Razor Pages + DataTables的技术栈,常见触发点和对应修复方案如下:

1. Razor Pages 处理器路由完全不匹配

Razor Pages 的PageModel处理器有固定命名规则:必须以OnGet/OnPost作为HTTP方法前缀,后面跟自定义的Handler名称,框架才能自动匹配路由。
你当前的配置存在两个路由问题:

  • 前端Ajax指定的handler名是LoadData,但后端方法名叫LoadTable,名称完全对不上
  • 后端方法没有加OnPost前缀(因为前端是POST请求),框架根本识别不到这是一个可调用的处理器方法
    这种情况下请求会直接命中404路由,返回HTML格式的错误页,前端按JSON解析自然失败。
    修复方式:把后端方法改成和前端配置匹配的命名:
// 对应前端 url 里的 ?handler=LoadData
public JsonResult OnPostLoadData()
{
    // 原有业务逻辑直接保留即可
}

2. XSRF 防伪令牌配置不生效

ASP.NET Core Razor Pages 默认开启防伪校验,只会从两个位置读取校验令牌:

  • 表单中名为__RequestVerificationToken的隐藏字段
  • 请求头名为RequestVerificationToken的取值
    你当前在beforeSend里把令牌放到了XSRF-TOKEN这个自定义请求头里,框架识别不到,会直接返回400 Bad Request的HTML错误页,同样触发JSON解析失败。
    修复方式:二选一即可:
  • 修改请求头名称,把AJAX里的请求头设置改成:
    xhr.setRequestHeader("RequestVerificationToken", $('input:hidden[name="__RequestVerificationToken"]').val());
  • 或者全局配置Antiforgery中间件的请求头名为XSRF-TOKEN,适配现有前端配置

3. 后端运行时异常返回HTML错误页

你的现有代码有几个容易触发未捕获异常的逻辑点,异常触发后你直接在catch块中throw,框架会返回包含堆栈的HTML错误页(开发环境)或者静态500错误页(生产环境),都不是合法JSON:

  • HttpContext.Session.GetInt32("IdDipendente") 如果Session未正确配置、或者用户未登录未存值,会返回null,后续LINQ查询时如果IdDipendente是不可空int类型,会直接触发空引用/类型匹配异常
  • 直接把EF Core查询出的Pres_Orari实体返回,如果实体带有关联导航属性,默认的JSON序列化会触发循环引用,导致序列化抛出异常
    修复方式:
  • 增加Session空值判断,拿到idDipendente后先校验是否有值,无值时直接返回带错误标识的JsonResult,避免空值引发的查询异常
  • 不要直接返回EF Core的实体对象,通过投影的方式只返回前端表格需要的字段,避免导航属性引发的循环引用问题:
// 替换原来的 data 赋值逻辑
var data = recordData.Skip(skip).Take(pagesize).Select(x => new {
    x.Id,
    x.DataOraInizio,
    x.DataOraFine,
    // 仅保留前端表格实际需要展示的字段,不要包含关联导航属性
}).ToList();
  • 把catch块的逻辑调整为返回JSON格式的错误信息,不要直接抛出异常返回HTML错误页

快速排查技巧

打开浏览器开发者工具的Network面板,找到对应的LoadData请求,查看实际响应内容:

  • 如果响应是HTML格式:基本就是前面提到的路由不匹配、防伪校验失败、运行时异常这三类问题
  • 如果响应是格式截断/结构错误的JSON:就是序列化逻辑(比如循环引用、特殊字符转义失败)的问题

内容的提问来源于stack exchange,提问作者elTuran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 07:36:08