Ran dans une erreur "Out of Stack Space" en essayant de sérialiser un objet ASP.Net AJAX Array.Erreur de sérialisation JavaScript ASP.Net AJAX
Voici le scénario avec le code simplifié:
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 }
Le code pour les pages échantillon et JavaScript est here. L'affichage du code pour les pages aspx ici posait un problème. Donc s'il vous plaît vérifier le lien ci-dessus pour voir le code pour les pages aspx.
Une page Web (default.aspx) avec un IFrame sur lequel héberge une page de contenu (content.aspx).
Cliquer sur le bouton "Serialize Object" appelle la fonction JavaScript serializeObject(). La sérialisation fonctionne correctement pour les objets Array créés dans la fenêtre supérieure (en dehors du cadre). Toutefois, si l'objet tableau est créé dans le cadre IFrame, les bombardements de sérialisation avec une erreur d'espace hors pile. J'ai traversé les fichiers ASP.Net AJAX JS et ce que j'ai découvert, c'est que le processus va dans une boucle sans fin essayant de comprendre le type de l'objet tableau. Appel sans fin à Number.IsInstanceOf et très bientôt vous obtenez une erreur de pile.
Des idées?