Maison >interface Web >js tutoriel >Comment résoudre l'erreur « Conversion de la structure circulaire en JSON » dans les extensions Chrome ?
Gestion des erreurs dans les extensions Chrome : résolution du problème de « Conversion de la structure circulaire en JSON »
Lorsque vous travaillez avec des extensions Chrome, il est courant de rencontrer erreurs liées à la sérialisation des données. L'une de ces erreurs est « TypeError : Conversion de la structure circulaire en JSON » rencontrée lors de l'utilisation de chrome.extension.sendRequest. Cela se produit lorsque la requête contient un objet avec des références circulaires, empêchant la sérialisation JSON.
Dans l'extrait de code fourni, l'objet de requête contient une propriété pagedoc. Cette variable représente probablement un nœud DOM. Les nœuds DOM en JavaScript ont des références circulaires, ce qui pose problème pour la sérialisation JSON.
Comprendre les références circulaires dans le DOM
Les nœuds DOM ont des références circulaires inhérentes en raison de :
En tant que Résultat, la sérialisation JSON échoue car elle tente de parcourir les références circulaires indéfiniment.
Solution : adressage des références circulaires Références
Pour résoudre ce problème, vous pouvez briser les références circulaires dans l'objet de requête avant de l'envoyer. Puisque les nœuds DOM sont hiérarchiques, vous pouvez créer un nouvel objet représentant les relations hiérarchiques sans références circulaires :
var newObj = { id: pagedoc.id, children: [] }; for (var i = 0; i < pagedoc.children.length; i++) { newObj.children.push({ id: pagedoc.children[i].id, ... // Continue building the nested structure without circular references }); }
Remplacez pagedoc dans l'objet de requête par newObj pour supprimer les références circulaires :
chrome.extension.sendRequest({ req: "getDocument", docu: newObj, name: 'name' }, function(response){ var efjs = response.reply; });
En cassant les références circulaires, vous pouvez désormais réussir à sérialiser l'objet de requête et l'envoyer à l'extension. L'extension peut alors traiter la requête et fournir la réponse attendue sans rencontrer l'erreur « Conversion de la structure circulaire en JSON ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!