所以我的问题是这样的:
1.我有一个html页面,它使用JQuery文件对话框并要求用户上传CSV文件
2.我在一个名为chart_edit.js的外部js文件中有一个名为dialogCalled()的函数
我的代码功能如下:
1.在文件对话框上成功上传文件后,单击"确定"按钮,我想调用另一个对话框(让我们称之为对话框2),该对话框显示用户上传的CSV数据转换为表格格式并显示在dialog2上。
2.因此,在下面给出的代码中,按下OK按钮,我希望在外部js文件中调用dialogCalled()函数。但是,我无法将文件对话框中选择的文件发送到外部js。我总是得到一个错误,说" Uncaught reference:dialogCalled未定义"
我应该如何将文件从文件对话框发送到外部js函数,还是有另一种方法?
代码:
1.我的html文件中的文件对话框:
$.FileDialog({multiple: false}).on('files.bs.filedialog', function(ev) {
files = ev.files;
if(files.length>1){
alert('More than 1 file not allowed');
}
else {
var text = "";
files.forEach(function(f) {
text += f.name + "<br/>";
});
$("#output").html(text);
//DRAWING CHART AFTER CLICK OK
$('#chartArea').empty();
var apiData = new FormData();
apiData.append( 'file', files[0]);
$("#loading").show();
$("#myModal").css("display","block");
dialogCalled(files);
}
//.DRAWING CHART AFTER CLICK OK
}).on('cancel.bs.filedialog', function(ev) {
$("#output").html("Cancelled!");
});
}
id&#34; myModal&#34;是包含dialog2的div。
函数dialogCalled()存储在外部JS文件中:
function dialogCalled(object f){
var files = f;
d3.text(files, function(datasetText) {
var parsedCSV = d3.csv.parseRows(datasetText);
var tbl = d3.select(".modal1-body")
.append("table")
.attr("class","data-table")
.attr("id","data-table");
// headers
tbl.append("thead").append("tr")
.selectAll("th")
.data(parsedCSV[0])
.enter().append("th")
.attr("class",function(d,i){return "col"+(i+1);})
.attr("id",function(d,i){return i+1})
.text(function(d) {
return d+" ";
})
.append("input").attr("type","checkbox").attr("class","form-checkbox").attr("id",function(d,i){return "col" + (i+1)});
// data
tbl.append("tbody")
.selectAll("tr").data(parsedCSV.slice(1))
.enter().append("tr")
.attr("id",function(d,i){return "row"+(i+1);})
.selectAll("td")
.data(function(d){return d;})
.enter().append("td")
.text(function(d){return d;})
.attr("class",function(d,i){return "col" + (i+1)})
});
}
有人可以帮我一下吗?
答案 0 :(得分:0)
请检查Js文件的顺序
首先应该加载chart_edit.js,然后加载你编写代码的js。