Chrome sendrequest错误:TypeError:将循环结构转换为JSON

Chrome sendrequest错误: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 HERE”,而是在运行时抛出以下错误 chrome.extension.sendRequest

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

有谁知道是什么原因引起的?


桃花长相依
浏览 301回答 3
3回答

哈士奇WWW

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

一只斗牛犬

一种方法是从主对象中剥离对象和函数。并将更简单的形式字符串化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