d3.json不接受要在d3-gantt图表中绘图的查询结果

d3.json is not accepting the query result to plot in d3 gantt chart

本文关键字:绘图 查询 结果 不接受 json d3-gantt d3      更新时间:2023-09-26

我的问题是这个。我有一个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 post

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();
});

像这样的东西。