我的问题是这样的。我有一个 d3 甘特图,它在第一次加载数据时工作正常,问题是当我使用过滤器表单查询另一个数据时。生成的查询和 json 编码没问题,但 d3.json 不接受我的新结果以在 d3 甘特图中绘制。我用console.log查看了数据,没问题。
这是我获取 d3 数据的代码
d3.json("json", function(error,json){
var tasks = [];
var taskNames = [];
for(var i = 0; i < json.length; i++){
var HANDLERID = json[i].HANDLERID;
taskNames.push(HANDLERID);
tasks.push({"startDate": new Date(json[i].START1),
"endDate": new Date(json[i].END1),
"taskName": HANDLERID,
"status": json[i].VAL1 });
tasks.push({"startDate": new Date(json[i].START2),
"endDate": new Date(json[i].END2),
"taskName": HANDLERID,
"status": json[i].VAL2 });
tasks.push({"startDate": new Date(json[i].START3),
"endDate": new Date(json[i].END3),
"taskName": HANDLERID,
"status": json[i].VAL3 });
}
console.log(tasks);
console.log(taskNames);
tasks.sort(function(a, b) {
return a.endDate - b.endDate;
});
var maxDate = tasks[tasks.length - 1].endDate;
tasks.sort(function(a, b) {
return a.startDate - b.startDate;
});
var minDate = tasks[0].startDate;
var format = "%Y-%b-%d";
var gantt = d3.gantt().taskTypes(taskNames).tickFormat(format);
gantt(tasks);
});
这是我的 jquery 帖子
function searching(){
var input_handlermodel = $("#input_handlermodel").val();
var input_handlerid = $("#handlerid").val();
$.post("../../mini/pm/json",
{input_handlermodel : input_handlermodel, input_handlerid : input_handlerid},
function(data){$("#result").html(data);});
}
这就是我对结果查询进行 json 编码的方式
$sth1 = ibase_query($query);
$items = array();
while($row1 = ibase_fetch_object($sth1) ) {
array_push($items, $row1);
}
$result["rows"] = $items;
echo json_encode($items);
最佳答案
只需尝试编写一个更新函数,并在加载新数据时调用它。除非正确更新图表,否则无法在同一个甘特图上绘制不同的数据。
.on('click', function(d) {
updateChart();
});
类似这样的东西。
关于javascript - d3.json 不接受在 d3 甘特图中绘制的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25738548/