Chrome-Sendeanforderungsfehler: TypeError: Konvertieren der kreisförmigen Struktur in JSON
Habe ich die folgenden...
chrome.extension.sendRequest({
req: "getDocument",
docu: pagedoc,
name: 'name'
}, function(response){
var efjs = response.reply;
});
welche Anrufe die folgenden..
case "getBrowserForDocumentAttribute":
alert("ZOMG HERE");
sendResponse({
reply: getBrowserForDocumentAttribute(request.docu,request.name)
});
break;
Jedoch meinen code nie erreicht "ZOMG HIER", sondern wirft die folgende Fehlermeldung während der Ausführung chrome.extension.sendRequest
Uncaught TypeError: Converting circular structure to JSON
chromeHidden.JSON.stringify
chrome.Port.postMessage
chrome.initExtension.chrome.extension.sendRequest
suggestQuery
Hat jemand eine Idee, was die Ursache dieses?
InformationsquelleAutor der Frage Skizit | 2011-01-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es bedeutet, dass das Objekt, das Sie übergeben die Anfrage (ich denke, es ist
pagedoc
) hat eine kreisförmige Referenz, so etwas wie:JSON.stringify
konvertieren kann Strukturen wie diese.N. B.: Dies wäre der Fall, mit einem DOM Knoten, die zirkuläre Referenzen, auch wenn Sie nicht an die DOM-Struktur. Jeder Knoten hat eine
ownerDocument
bezieht sich aufdocument
in den meisten Fällen.document
hat eine Referenz auf den DOM-Baum mindestens durchdocument.body
unddocument.body.ownerDocument
bezieht sich wieder aufdocument
wieder, das ist nur eine von mehreren Zirkelbezügen in den DOM-Baum.InformationsquelleAutor der Antwort Felix Kling
Als pro die JSON-docs bei Mozilla
JSON.Stringify
hat einen zweiten parametercensor
die verwendet werden können, zu filtern/ignorieren Kinder Gegenstände, die beim analysieren der Baum. Aber vielleicht können Sie vermeiden, das zirkuläre Referenzen.In Node.js das können wir nicht. So können wir etwas wie das hier tun:
Das Ergebnis:
Leider scheint es werden maximal 30 Iterationen, bevor es automatisch davon ausgegangen, dass es rund ist. Ansonsten sollte diese Arbeit. Ich selbst verwendet
areEquivalent
von hier ausaberJSON.Stringify
noch wirft die Ausnahme nach 30 Iterationen. Dennoch ist es gut genug, um eine anständige Darstellung des Objekts auf top-Niveau, wenn Sie es wirklich brauchen. Vielleicht jemand kann verbessert werden obwohl? In Node.js für eine HTTP-request-Objekt, ich bin immer:Habe ich ein kleines Node.js Modul dies hier tun: https://github.com/ericmuyser/stringy Fühlen Sie sich frei, um zu verbessern/contribute!
InformationsquelleAutor der Antwort Eric Muyser
Ein Ansatz ist, um Streifen-Objekt und Funktionen von Haupt-Objekt. Und stringify die einfachere form
InformationsquelleAutor der Antwort zainengineer
Verwende ich normalerweise die Kreis-json npm-Paket, um dieses Problem zu lösen.
https://www.npmjs.com/package/circular-json
InformationsquelleAutor der Antwort user3139574
Ich dieses problem lösen auf NodeJS wie diese:
InformationsquelleAutor der Antwort MiF
Könnte dies nicht im Zusammenhang Antwort, aber dieser link Erkennen und beheben von Zirkelbezügen in JavaScript vielleicht hilfreich, um zu erkennen, Objektedie verursacht zirkuläre Abhängigkeit.
InformationsquelleAutor der Antwort Ramesh Papaganti
Ich erlebt habe, der gleiche Fehler beim erstellen der Nachricht unten mit jQuery. Der Zirkelbezug passiert, wenn
reviewerName
wurde irrtümlich zugeordnetmsg.detail.reviewerName
. JQuery .val() behebt das Problem, siehe Letzte Zeile.InformationsquelleAutor der Antwort izilotti
War ich immer die gleichen Fehler mit jqurty formvaliadator, entfernt, aber wenn ich eine Konsole.melden Sie im inneren success: function, es funktionierte.
InformationsquelleAutor der Antwort Azmeer