doutuo3575
doutuo3575
2017-04-11 17:18

将JSON数据传递给d3.json时出错

已采纳

When I click a button, I pass an array of data from a viewmodel. On the d3.json function, I use json_encode against the viewmodel to tranform it to a JSON object. When I inspect it on the page, it does convert it but I am getting an

"Uncaught SyntaxError: missing ) after argument list".

Can someone tell me what I am doing wrong?

d3.json("<?php echo json_encode($viewmodel) ?>", function(error,data){
        data.forEach(function(d) {
          d.projectdate = parseDate(d.projectdate);
          d.Cost = +d.Cost;
        });

          var svg = d3.select("body")
                      .append("svg")
                      .attr("id", "chart")
                      .attr("width", w)
                      .attr("height", h);

          svg.selectAll("bar")
              .data(data)
              .enter()
                .append("rect")
                .classed("bar", true)
                .attr("x", 0)
                .attr("y", function(d, i){
                    return i * 20
                })
                .attr("width", function(d,i){
                    return d;
                })
                .attr("height", 20);


    });
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dongpan1308 dongpan1308 4年前

    d3.json() expects a url as its first parameter, not a JSON string. This will in turn request the specified file at that particular url to load the JSON from.

    In your case, however, it might be easier to directly assign the JSON to the data variable.

    var data = JSON.parse("<?php echo json_encode($viewmodel) ?>");
    
    data.forEach(function(d) {
      //...
    });
    
    点赞 评论 复制链接分享