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

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

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

桃花长相依 2019-12-22 20:08:29
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有谁知道是什么原因引起的?
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

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

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

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

注意:DOM节点就是这种情况,它们具有循环引用,即使它们没有附加到DOM树。每个节点都有一个在大多数情况下ownerDocument引用的节点documentdocument具有至少一个通过参考DOM树document.bodydocument.body.ownerDocument指回document再次,这是唯一一个在DOM树中的多个循环引用。



查看完整回答
反对 回复 2019-12-23
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

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

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-12-23
  • 3 回答
  • 0 关注
  • 300 浏览
慕课专栏
更多

添加回答

举报

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