Javascript D3.JSON解析错误

Javascript D3.JSON解析错误,javascript,json,d3.js,svg,Javascript,Json,D3.js,Svg,当使用d3.JSON(obj,function(error,root)解析内联JSON对象时,当我在本地运行它时,它可以正常工作,但是当我在tomcat服务器上运行时,我得到了一个XMLHttpparse错误。我在Internet上搜索了。我找到的答案是CORS。但是没有明确的方法来实现它。你能帮助我吗 var obj = { "name": "vis", "children": [ { "name": "Votes", "children": [ {"name":

当使用
d3.JSON(obj,function(error,root)
解析内联JSON对象时,当我在本地运行它时,它可以正常工作,但是当我在tomcat服务器上运行时,我得到了一个XMLHttpparse错误。我在Internet上搜索了。我找到的答案是CORS。但是没有明确的方法来实现它。你能帮助我吗

var obj = {
 "name": "vis",
 "children": [
  {
   "name": "Votes",
   "children": [
    {"name": "200", "size": 200,"url":"1"},
    {"name": "500", "size": 500,"url":"2"},
    {"name": "300", "size": 300,"url":"3"},
    {"name": "400", "size": 400,"url":"4"}
   ]
  },  
  {
   "name": "Reputation", 
   "children": [
    {"name": "200", "size": 200},
    {"name": "500", "size": 500},
    {"name": "300", "size": 300},
    {"name": "400", "size": 400}
   ]
  },
  {
   "name": "Accepted Answer",
   "children": [    
    {
     "name": "encoder",
     "children": [
      {"name": "Accepted Answer", "size": 500}
     ]
    }
   ]
  }
 ]
};
d3.json(obj, function(error, root) {
    alert('error '+error);
    alert('root: '+root);
  if (error) return console.log(error);
}

您误解了d3.json的用途。
d3.json
发出了实际的AJAX请求(因此,为什么在文档中将本章命名为)因此,它确实在尝试获取该对象,但无法获取,因为它不需要这样做。如果您确实想使用
d3.json
,您可以将该json对象移动到其自己的文件中,然后通过执行
d3.json(data.json,function(err,root))
来引用它

结果
d3.json
将返回您声明的对象。您只需将其分配给变量名
root


相关问题:

首先,确保将URL作为第一个参数传递给d3.json()

其次,您需要配置Tomcat以支持CORS。在7.0.41+版本中,Tomcat包含一个CORS筛选器。请将该筛选器添加到web.xml文件中

以下是您需要的最低配置:

<filter>
  <filter-name>CorsFilter</filter-name>
  <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>CorsFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

克斯菲尔特
org.apache.catalina.filters.CorsFilter
克斯菲尔特
/*
有关更多信息和其他配置选项,请参阅文档:

下面是此筛选器的一个请求处理过程,可以帮助您设置任何其他参数:


如果
obj
已经是一个JavaScript对象,那么为什么需要
JSON.parse(obj)
呢?@Oleg好的,你可能不需要这样做。我删除了这个小贴士。