Chrome发送请求错误:TypeError:将循环结构转换为JSON

Chrome发送请求错误:TypeError:将循环结构转换为JSON

我有以下.。

chrome.extension.sendRequest({
  req: "getDocument",
  docu: pagedoc,
  name: 'name'}, function(response){
  var efjs = response.reply;});

这就叫.。

case "getBrowserForDocumentAttribute":
  alert("ZOMG HERE");
  sendResponse({
    reply: getBrowserForDocumentAttribute(request.docu,request.name)
  });
  break;

但是,我的代码从未到达“ZOMG这里”,而是在运行时抛出以下错误chrome.extension.sendRequest

 Uncaught TypeError: Converting circular structure to JSON
 chromeHidden.JSON.stringify
 chrome.Port.postMessage
 chrome.initExtension.chrome.extension.sendRequest
 suggestQuery

有人知道是什么原因造成的吗?


PIPIONE
浏览 614回答 3
3回答

开满天机

这意味着您在请求中传递的对象(我猜是pagedoc)有一个循环引用,类似于:var a = {};a.b = a;JSON.stringify不能转换这样的结构。N.B.:对于具有循环引用的DOM节点,即使它们没有附加到DOM树,情况也是如此。每个节点都有一个ownerDocument指的是document在大多数情况下。document具有对DOM树的引用,至少通过document.body和document.body.ownerDocument指回document再说一次,这只是一DOM树中的多个循环引用。

Helenr

一种方法是从主对象中剥离对象和函数。并将更简单的形式function simpleStringify (object){     var simpleObject = {};     for (var prop in object ){         if (!object.hasOwnProperty(prop)){             continue;         }         if (typeof(object[prop]) == 'object'){             continue;         }         if (typeof(object[prop]) == 'function'){             continue;         }         simpleObject[prop] = object[prop];     }     return JSON.stringify(simpleObject); // returns cleaned up JSON};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript