You need to enable JavaScript to run this app. C#序列化JSON返回前端JS解析报Unexpected token <错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

C#序列化JSON返回前端JS解析报Unexpected token <错误如何解决

ASP.NET Web Form 返回JSON附带多余HTML的解决方案

问题原因

ASP.NET Web Form的aspx页面默认会走完完整的页面生命周期,你在Page_Load中输出JSON后,后续的页面渲染流程仍会执行,自动拼接页面的HTML代码到响应内容末尾,导致JSON格式被破坏。

可用解决方法

  • 方法1:输出JSON后直接终止当前响应(最快修复)
    修改你的Page_Load代码,输出JSON前清空响应内容、设置正确的响应头,输出后直接终止响应,阻止后续HTML渲染:
protected void Page_Load(object sender, EventArgs e)
{
    Mydata mydata = new Mydata();
    mydata.name = "john";
    var json = new JavaScriptSerializer().Serialize(mydata);
    // 清空已生成的响应内容,避免冗余输出
    Context.Response.Clear();
    // 设置JSON格式的响应头,便于前端识别
    Context.Response.ContentType = "application/json";
    Context.Response.Write(json);
    // 直接终止响应,不再执行后续页面渲染逻辑
    Context.Response.End();
}
  • 方法2:使用一般处理程序(.ashx)做接口(规范方案)
    aspx页面本质是用来渲染Web页面的,天生带有HTML渲染逻辑,做数据接口更推荐用专门的一般处理程序,不会自动生成多余HTML:
  1. 右键项目添加「一般处理程序」,命名为GetData.ashx
  2. 写入核心逻辑:
public class GetData : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        Mydata mydata = new Mydata();
        mydata.name = "john";
        var json = new JavaScriptSerializer().Serialize(mydata);
        context.Response.ContentType = "application/json";
        context.Response.Write(json);
    }

    public bool IsReusable
    {
        get { return false; }
    }
}
  1. 前端请求地址替换为GetData.ashx即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 16:45:03