Javascript: TypeError: значение циклического объекта

Я пытаюсь выровнять объект javascript, однако, когда я делаю это, получим следующую ошибку:

TypeError: значение циклического объекта

Я не считаю, что мой код содержит любые циклические ссылки (newServiceObject не упоминается внутри объекта), поэтому я не понимаю, почему я получаю это сообщение.

Я хочу превратить свой объект, содержащий два свойства и массив в одну строку.

var serviceName = $('#newServiceNameBox').val();
 var serviceCodeElemList = $(".ServiceCodeName").map(function() { return $(this).html(); } );
 //create the new service object
 var newServiceObject = {ServiceId:-1, ServiceName: serviceName, ServiceCodes: serviceCodeElemList };
 var appendNewService = '&newService='+JSON.stringify(newServiceObject);

Ошибка на последней строке (JSON.Stringify()), но я понятия не имею, почему!

2 ответа

Это обычно потому, что вы пытаетесь сериализовать объект JavaScript, у которого есть свойства, указывающие друг на друга в цикле.

В вашем примере newServiceObject.serviceCodeElemList указывает на объект jQuery, который имеет в нем циклы: Свойство context, которое указывает на объект документа. Объект документа имеет указатели на элементы DOM, которые имеют указатели назад к документу с помощью свойства ownerDocument


Нашел его!

Моя проблема заключалась в том, что при использовании jquery для сборки массива я должен был включить метод ToArray() после функции map.

var serviceCodeElemList = $(".ServiceCodeName").map(function() { return $(this).html(); } ).ToArray();

Поэтому, когда массив включен в объект, это стандартный массив, а не объект jquery.

licensed under cc by-sa 3.0 with attribution.