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 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
这意味着你在请求中传递的对象(我猜它是pagedoc)有一个循环引用,如:
var a = {};a.b = a;JSON.stringify 不能转换像这样的结构。
注意:DOM节点就是这种情况,它们具有循环引用,即使它们没有附加到DOM树。每个节点都有一个在大多数情况下ownerDocument引用的节点document。document具有至少一个通过参考DOM树document.body和document.body.ownerDocument指回document再次,这是唯一一个在DOM树中的多个循环引用。
一只甜甜圈
TA贡献1836条经验 获得超5个赞
一种方法是从主对象中剥离对象和函数。并将更简单的形式字符串化
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};添加回答
举报
0/150
提交
取消
