You need to enable JavaScript to run this app. 后端无报错但Ajax返回正确数据却触发error回调且状态为404
优惠活动
大模型
产品
解决方案
定价
更多

后端无报错但Ajax返回正确数据却触发error回调且状态为404

问题根因

你遇到的是服务端方法执行正常,但响应状态码被框架/中间件篡改为404的情况,常见原因有路由不匹配、控制器类型与返回值不兼容、AJAX参数配置错误三类。

解决方案

  • 确认控制器类型与路由配置匹配
    首先检查你的SceneList控制器的父类:
    • 如果继承自System.Web.Mvc.Controller(MVC控制器):默认路由规则不带/api前缀,你需要调整AJAX的url为/SceneList/SceneListUpdated?sceneId= + sceneIdAux,或者确认RouteConfig.cs中特意为MVC控制器配置了/api/test前缀的路由规则。
    • 如果继承自System.Web.Http.ApiController(Web API控制器):不能使用MVC专属的JsonResult作为返回值,需要修改方法返回值为IHttpActionResult,返回时改为return Ok(new { Success = true, data = model });、return Ok(new { Success = false, data = "" });,Web API会自动完成JSON序列化并设置200状态码。
  • 补充请求谓词声明
    在SceneListUpdated方法上添加[HttpGet]特性,显式声明该方法接受GET请求,避免框架谓词校验失败篡改状态码。
  • 修正AJAX请求参数
    • 删除contentType: "application/json; charset=utf-8"配置:GET请求没有请求实体,不需要指定内容类型,错误的头可能触发服务端额外校验。
    • 把参数datatype修正为dataType:jQuery的AJAX参数大小写敏感,拼写错误会导致返回的JSON无法被正确识别。
  • 配置IIS不篡改响应
    如果上述修改后仍有问题,在项目web.config的<system.webServer>节点下添加配置:
    <httpErrors existingResponse="PassThrough" />
    
    避免IIS默认的错误页规则修改你的响应状态码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 02:36:02