来自本地计算机的数据
Data from local computer
我想从计算机上的JSON文件加载数据。我知道没有HTTP服务器我就无法阅读,所以我想创建一个输入字段。我的文件被成功读取,但当我将数据发送到函数以创建气泡图时,什么都没有创建。如果我从本地加载,它就可以工作(我执行HTTP服务器)。这是代码:
<script type="text/javascript">
var json;
function handleFileSelect(evt) {
var files = evt.target.files;
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
function handleFileSelect(evt) {
var files = evt.target.files;
var output = [];
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
json = JSON.parse(e.target.result);
alert('json global var has been set to parsed json of this file here it is unevaled = 'n' + JSON.stringify(json));
initData(JSON.stringify(json)); // Doesn't works
//initData("data.json"); // Works
}
})(f);
reader.readAsText(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
function initData(data){
d3.json(data, function(error, root) {
if (error) throw error;
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
// .....
这是Plunker的在线示例:https://plnkr.co/edit/T8WFvj0qtMW5mFK6gOjO?p=preview
谢谢。
d3.json
为其第一个参数使用文件路径,并将解析后的json传递给其回调。由于您自己加载和解析json,因此不需要使用d3.json
,只需将json作为root
直接传递给回调即可。
这应该起作用:https://plnkr.co/edit/0H6t9m642cxCcukPwDFH?p=preview
如果您还想通过d3.json
加载服务器提供的内容,您可以使用以下方法来完成:
var loadFromUrl = function(url){
d3.json(url, function(error, data){
if(!error) {
initData(data);
}
});
};
感谢您的回答!这是一个很好的代码,只需发送JSON,而不使用d3.JSON
<script type="text/javascript">
var json;
function handleFileSelect(evt) {
var files = evt.target.files;
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
function handleFileSelect(evt) {
var files = evt.target.files;
var output = [];
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
json = JSON.parse(e.target.result);
alert('json global var has been set to parsed json of this file here it is unevaled = 'n' + JSON.stringify(json));
initData(json); // Doesn't works
//initData("data.json"); // Works
}
})(f);
reader.readAsText(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
function initData(root){
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
//....
相关文章:
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 一台特定计算机的Ajax请求数据未定义/失败
- 来自本地计算机的数据
- 是否可以使用 PHP 或 JavaScript 或任何其他编程语言在客户端计算机中存储大约 1 MB 的数据
- jQueryajax,附加数据有效,但数据对另一端(计算机/用户)可见
- 将客户端数据发送到另一台计算机
- 将数据发送到外部服务器的PHP页面,并在本地计算机中从JavaScript加载内容
- 我们如何找到计算机规格的统计数据,以便我们知道我们的web应用程序的目标
- 使用socket.io在计算机之间(不一定在同一网络上)发送数据包的工作示例