为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2019-06-26 16:32:14
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有人知道是什么原因造成的吗?
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

这意味着您在请求中传递的对象(我猜是pagedoc)有一个循环引用,类似于:

var a = {};a.b = a;

JSON.stringify不能转换这样的结构。

N.B.:对于具有循环引用的DOM节点,即使它们没有附加到DOM树,情况也是如此。每个节点都有一个ownerDocument指的是document在大多数情况下。document具有对DOM树的引用,至少通过document.bodydocument.body.ownerDocument指回document再说一次,这只是DOM树中的多个循环引用。


查看完整回答
反对 回复 2019-06-26
?
Helenr

TA贡献1780条经验 获得超4个赞

一种方法是从主对象中剥离对象和函数。并将更简单的形式

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};


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 613 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信