我正在尝试使用javascript从JSON文件中提取元素,但是却收到一条错误消息,提示它无法加载JSON文件。
这是我的代码如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>D3 Tutorial</title> <script src="http://d3js.org/d3.v3.min.js"> </script> </head> <body> <script> d3.json("mydata.json", function(data) { var canvas = d3.select("body").append("svg") .attr("width", 500) .attr("height", 500) canvas.selectAll("rect") .data(data) .enter() .append("rect") .attr("width", function (d) { return d.age * 10;}) .attr("height", 48) .attr("y", function (d,i) { return i * 50; }) .attr("fill", "blue"); }) </script> </body> </html>
这是控制台吐出的错误:
XMLHttpRequest cannot load file:///C:/locationoffile..../mydata.json. Cross origin requests are only supported for HTTP. d3.v3.min.js:1 Uncaught TypeError: Cannot read property 'length' of null d3.v3.min.js:3 Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101 d3.v3.min.js:1
d3.json用于通过HTTP加载数据。正如@Quentin所说,您可以设置一个本地服务器来通过HTTP提供数据。
对于这样的开发,我使用firefox,它在处理本地跨源请求时似乎比chrome更宽容。或者,您可以使用http://tributary.io/
您的代码示例:http : //tributary.io/inlet/5776228