【发布时间】:2010-09-08 14:03:43
【问题描述】:
在尝试序列化 ASP.Net AJAX 数组对象时遇到“堆栈空间不足”错误。
下面是简化代码的场景:
Default.aspx-
MainScript.jsfunction getObject(){ return new Array(); } function function1(obj){ var s=Sys.Serialization.JavaScriptSerializer.serialize(obj); alert(s); } function function2(){ var obj=getObject(); var s=Sys.Serialization.JavaScriptSerializer.serialize(obj); alert(s); } Content.aspx-
ContentScript.jsfunction serializeObject(){ var obj=window.top.getObject(); window.top.function1(obj); // <– This works fine obj=new Array(); window.top.function1(obj); // <– this causes an Out of Stack Space error }
示例页面和 JavaScript 的代码是 here。
在此处发布 aspx 页面的代码存在问题。所以请检查上面的链接以查看 aspx 页面的代码。
带有 IFrame 的网页 (default.aspx) 承载内容页面 (content.aspx)。
单击“序列化对象”按钮调用 JavaScript 函数 serializeObject()。序列化适用于在顶部窗口(框架外)中创建的 Array 对象。但是,如果在 IFrame 中创建数组对象,则序列化会出现堆栈空间不足的错误。我逐步浏览了 ASP.Net AJAX JS 文件,我发现,该过程进入了一个无限循环,试图找出数组对象的类型。对 Number.IsInstanceOf 的无休止调用,很快就会出现堆栈外错误。
有什么想法吗?
【问题讨论】:
标签: asp.net javascript asp.net-ajax