2015-09-01 19 views
6

Ben bir javascript nesnesi stringify çalışıyorum, ancak bunu yaptığımda bu aşağıdaki hatayı alıyorum:JavaScript: TypeError: halkalı nesne değeri

TypeError: cyclic object value

benim kod herhangi döngüsel başvurular içerdiğini inanmıyorum (newServiceObject nesnenin içinde başvurulamaz), bu yüzden neden bu mesajı alıyorum anlamıyorum.

İki özellik ve bir dizi içeren bir nesnemi tek bir dizeye dönüştürmek istiyorum.

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); 

hata son satırında (JSON.stringify()) oluşursa ama hiç bir fikrim neden var!

+0

içinden geri belgeye işaretçiler var DOM öğelerine işaretçileri vardır? –

cevap

4

Bu, genellikle, bir döngüde birbirlerine işaret eden özelliklere sahip bir JavaScript nesnesini serileştirmeye çalıştığınız içindir.

Örneğinizde, newServiceObject.serviceCodeElemList, içinde döngüleri olan jQuery nesnesini işaret eder: Bir belge nesnesine işaret eden context özelliği. Bir belge nesnesi nesne newServiceObject` `JSON verilerini gönderebilir ownerDocument mülkiyet

var jqueryObj = $('div'); 
 
    console.log(jqueryObj.context); // Document object 
 
    console.log(jqueryObj.context.body.firstChild.ownerDocument); // Document object 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div>

+0

yukarıdaki cevaba bakınız! Soruma göre, kodumda böyle belirgin bir şey göremedim. Tahminim, jquery nesnesine içsel olan bir şeyin bu –

+0

@NeilP olduğunu belirtir. Döngüyü jQuery nesnelerinde nerede olduğunu açıklamak için değiştirdim. –

+0

Bu açıklıyor! –

2

Bulunamadı!

Sorunum, diziyi oluşturmak için jquery kullanıldığında, harita işlevinden sonra ToArray() yöntemini içermesi gerektiğiydi.

Bu nedenle, dizi nesneye eklendiğinde, standart bir dizidir ve jquery nesnesi değildir.

İlgili konular