在 jquery 中访问在页面中序列化的变量时出现 Json 解析错误 asp.net .cs

Json Parsing error when accessing in jquery of a variable which is serialized in asp.net .cs page

本文关键字:Json asp cs net 错误 访问 jquery 序列化 变量      更新时间:2023-09-26

嗨,我正在执行以下代码,我将以下代码保存在单独的 js 文件中,并在所有其他.aspx文件中引用该文件。当我直接将以下代码放在文件脚本部分中时.aspx它可以正常工作,但是当我将其与其他函数一起保存在单独的js文件中时,它无法正常工作

function pageLoad(sender, args) {

  var dict = $.parseJSON('<%=DictJson %>');
var data = eval(dict);

}

我在var dict = $.parseJSON('<%=DictJson %>');得到错误。显示的错误Microsoft JScript 运行时错误:引发异常且未捕获,并且正在 json 文件中显示该抛出 } if (!v("json-parse")) { var M = String.fromCharCode, N = { 92: "''", 34: '"', 47: "/", 98: "''u0008", 116: "''t", 110: "'", 102: "''u000c", 114: "''r" }, b, A, j = 函数 () { b = A = w;抛出语法错误();}, q = 函数 () { for (var a = A, f = a.length, c, d, h, k, e; b

我写了 DictJson 是一个解析的字典,我正在其他一些基本页面的后端解析它,每个页面都可以访问它。 解析代码为

    public string DictJson
    {
        get
        {
            MouseOverFieldDict mdict = (MouseOverFieldDict)(HttpContext.Current.Session["MouseOverFieldDict"]);
            JavaScriptSerializer jSer = new JavaScriptSerializer();
            return jSer.Serialize(mdict.FieldDict);
        }
    }

请帮助我解决错误。我不明白为什么它会在脚本中抛出该错误

服务器端表达式 "<%=DictJson %>" 仅在代码隐藏中的可访问成员(属性/字段)的情况下,在.aspx文件中计算。对 JavaScript 文件的请求是一个完全独立的请求,因此它不知道 DictJson。

你仍然可以在你的JavaScript中使用你的函数,但我建议这样的东西:

JavaScript 文件:

function myPageLoad(DictJson) {
  var dict = $.parseJSON(DictJson);
  var data = eval(dict);
}

代码隐藏(粗略地说,我没有为 c# 设置):

void Page_PreRender(object sender, EventArgs args) {
  string scriptName;
  string scriptText;
  // have jQuery to call the function in your JS with the serialized Dict
  scriptText = "$(function(){myPageLoad('" + DictJson + "');});";
  scriptName = "onLoadScript";
  ClientScriptManager.RegisterStartupScript(Me.GetType(), scriptName, scriptText, True);
}

注册启动脚本文档:http://msdn.microsoft.com/en-us/library/z9h4dk8y.aspx

如果我

没记错的话,问题是当你将javascript移动到它自己的单独文件中时,javascript不知道如何原生处理"gator"标签(<%=...%>)。 您要么需要在 aspx 页中保持脚本内联,要么需要提出一种机制,以便在进行函数调用时将 DictJson 的值传递给函数调用。