Проблема с сериализацией объектов JavaScript в ASP.Net AJAX
Столкнулся с ошибкой “Переполнение стека” при попытке сериализовать массив через ASP.Net AJAX. Проблема возникает в специфичной ситуации с фреймами.
Описание ситуации
У меня есть главная страница с iframe внутри. В главном окне создается функция для получения массива, а в iframe вызывается сериализация.
// Код в основном окне (main.js)
function createNewArray(){
return new Array();
}
function serializeData(data){
var result = Sys.Serialization.JavaScriptSerializer.serialize(data);
alert(result);
}
function processArray(){
var data = createNewArray();
var result = Sys.Serialization.JavaScriptSerializer.serialize(data);
alert(result);
}
// Код во фрейме (frame.js)
function handleSerialization(){
var data = window.parent.createNewArray();
window.parent.serializeData(data); // Работает нормально
data = new Array();
window.parent.serializeData(data); // Вызывает ошибку переполнения стека
}
Суть проблемы
Когда массив создается в родительском окне, сериализация проходит успешно. Но если тот же массив создается внутри iframe и передается в родительское окно для сериализации, возникает бесконечный цикл.
При отладке заметил, что процесс зацикливается на определении типа массива, постоянно вызывая Number.IsInstanceOf, что в итоге приводит к переполнению стека.
Кто-нибудь сталкивался с подобной проблемой? Есть ли способы обойти это ограничение?