尝试序列化ASP.Net AJAX Array对象时,出现“Out of Stack Space”错误。ASP.Net AJAX JavaScript序列化错误
这里是简化代码的情形:
Default.aspx
MainScript.js
function 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.js
function 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)。
单击“Serialize Object”按钮调用JavaScript函数serializeObject()。序列化对顶部窗口中创建的Array对象(在框架之外)工作良好。但是,如果数组对象是在IFrame中创建的,则序列化炸弹会出现堆栈空间错误。我跨过了ASP.Net AJAX JS文件,我发现的是,该过程进入无尽的循环,试图找出数组对象的类型。无休止地调用Number.IsInstanceOf,很快你会得到一个堆栈错误。
任何想法?