You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET WebForm页面跳转时出现Invalid JSON primitive错误求助

解决ASP.NET WebForm母版页跳转时的"Invalid JSON primitive"错误

问题根源分析

这类错误大多是因为页面跳转时,原页面中Rad控件的AJAX请求未正常终止、残留的控件状态与母版页请求上下文冲突,或是Handler返回的JSON被意外篡改导致解析失败。

具体解决方案

  • 清理复制控件的AJAX绑定与状态
    复制RadGrid/RadHtmlChart到目标div后,必须移除原控件的AJAX相关配置和事件绑定,避免页面跳转时残留的JS逻辑尝试发送不完整请求:

    // 处理RadGrid
    var originalGrid = $find("<%= RadGrid1.ClientID %>");
    if (originalGrid) {
        originalGrid.get_masterTableView().set_ajaxSettings(null);
        $telerik.$(originalGrid.get_element()).off("ajaxRequest");
    }
    
    // 处理RadHtmlChart
    var originalChart = $find("<%= RadHtmlChart1.ClientID %>");
    if (originalChart) {
        originalChart._dataSource = null;
        $telerik.$(originalChart.get_element()).off("dataBinding");
    }
    
  • 跳转前终止所有未完成的AJAX请求
    在母版页的导航操作触发前,主动终止当前页面所有pending的异步请求,防止不完整的JSON数据被错误解析:

    function cancelPendingRequests() {
        // 终止ASP.NET AJAX请求
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        if (prm.get_isInAsyncPostBack()) {
            prm.abortPostBack();
        }
        // 终止Telerik的AJAX请求
        $telerik.xhr.abortAll();
    }
    

    给母版页的导航按钮添加点击事件:onclick="cancelPendingRequests();"

  • 确保Handler返回标准JSON格式
    检查Handler的ProcessRequest方法,用专业序列化库生成严格格式的JSON,同时清除响应缓冲区避免多余输出:

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        var data = GetGridAndChartData();
        // 使用Newtonsoft.Json生成标准JSON
        string json = JsonConvert.SerializeObject(data);
        
        context.Response.Clear();
        context.Response.Write(json);
        context.Response.End();
    }
    
  • 复制渲染后的静态内容而非完整控件DOM
    不要直接复制Rad控件的整个DOM结构,只复制其渲染后的静态HTML,减少控件状态冲突:

    // 复制RadGrid渲染后的内容
    $telerik.$("#targetGridDiv").html($telerik.$("#<%= RadGrid1.ClientID %>").html());
    // 复制RadHtmlChart渲染后的内容
    $telerik.$("#targetChartDiv").html($telerik.$("#<%= RadHtmlChart1.ClientID %>").html());
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:07:18