2012-05-08 11 views
6

I HAVA JSON obiekt:wyjątkiem JavaScript: Uncaught Błąd typu: Konwersja okrągłą konstrukcję JSON

[#1={id:"2012-05-04", title:"Scheduled", start:(new Date(1336096800000)), source:{events:[#1#], className:[]}, _id:"2012-05-04", _start:(new Date(1336089600000)), end:null, _end:null, allDay:true, className:[]}] 

próbie go stringify:

var test = JSON.stringify(resourceVacation, censor(resourceVacation)); 

function censor(censor) { 
    return (function() { 
     var i = 0; 
     return function(key, value) { 
      if (i !== 0 && typeof(censor) === 'object' && typeof(value) == 'object' && censor == value) 
       return '[Circular]'; 

      ++i; // so we know we aren't using the original object anymore 

      return value; 
     } 
    })(censor); 
} 

użyć cenzora jak wspomniano tutaj: Chrome sendrequest error: TypeError: Converting circular structure to JSON n

Jednak otrzymuję następujący wyjątek w stosunku do przeglądarki:

Uncaught TypeError: Converting circular structure to JSON

Oto obiekt Java Script: enter image description here

mam poprzedni obiekt JSON, używając toSource() w przeglądarce Mozilla. Każdy pomysł, jak to naprawić!

============================ UPDATE ================= =======

Właściwie muszę podzielić się z wami scnerio od początku: 1 -Initially: mam formularz, a na końcu zbudować obiekt java script, który jest:

#1=[{id:"2012-05-03", title:"Scheduled", start:(new Date(1336010400000)), source:{events:#1#, className:[]}, _id:"2012-05-03", _start:(new Date(1336003200000)), end:null, _end:null, allDay:true, className:[]}] 

Zadanie to stringified normalnie ... Zauważ, że "s typowe dla tego, który będzie ogień wyjątek później.

2- Następnie la ter usunąć obiekty z tej tablicy przy użyciu:

function deleteVacation(day) { 
    for (var index = 0; index < resourceVacation.length; index++) { 
     if (resourceVacation[index].id == day) 

      resourceVacation.splice(index,1); 
    } 

3-Kiedy próbuję stringify tej tablicy po Usunąłem pojedynczy obiekt, pojawia się wspomniany wyjątek. Więc .. pomysły anu, dlaczego to minęło po raz pierwszy i nie powiodło się po raz drugi !!

+0

Zatwierdź swój JSON. To wydaje się być nieprawidłowy: http://www.jsonlint.org –

+0

Właściwie co mam już jest tablicą obiektów i użyłem obj.toSource(), aby ta JSON. – Echo

+0

Zaktualizowałam mój post. Proszę, zaproś mnie, jeśli masz jakiekolwiek obawy. – Echo

Odpowiedz

8

nie można zakodować data JSON obiektów.

Od json.org „Wartość może być ciągiem znaków w cudzysłowach lub numer, albo prawdziwe lub fałszywe lub null, lub obiektu lub tablicę Struktury te mogą być zagnieżdżone.”

+1

Nie podążam za tobą tutaj, możesz rozwinąć więcej! – Echo

+2

@Echo: To całkiem proste.Wartości w JSON są ograniczone w jakich typach mogą być. Odpowiedź mówi, że daty nie należą do tych typów. Jeśli chcesz randkę, jednym z łatwych sposobów na obejście jest zamiana daty na ciąg lub liczbę. W zależności od tego, czego potrzebujesz, jeden lub drugi może być lepszy. – cHao

+0

Myślę, że to może być tylko część problemu. Błąd (i ta inna odpowiedź, z którą się łączysz) mówi, że próbujesz zakodować obiekt z odwołaniami cyklicznymi. Próbuję usunąć wartości 'start' i' _start', a jeśli to nie naprawi, usuń tablice lub właściwości obiektu. Jeśli to naprawi, sprawdź, czy jedna z tablic lub usuniętych obiektów nie odwołuje się do niczego wyżej w łańcuchu. – dontGoPlastic

7

Problemem jest źródłem - object which is a circular reference.

Powinieneś utworzyć kopię obiektu bez obiektu źródłowego.

To jak mam rozwiązać ten problem w FullCalendar.

+0

Awesome - thanks –

+0

Czy jest ktoś, kto może mi wyjaśnić, jak to osiągnąć? –

Powiązane problemy