javascript + django-typeError:X未定义

javascript json ajax django p5.js

141 观看

1回复

430 作者的声誉

我正在使用p5.js使用由我的Django后端提供的json数据进行一些绘图。我在脚本元素中的html doc的基本级别定义了我的draw函数,如下所示:

function draw(json) {

  if (json["leaf_text"]) {
    stroke(100)
    ellipse(json["leaf_center_x"], json["leaf_center_y"], json["leaf_height"], json["leaf_width"]).rotate(json["leaf_rotate"]);
  }
  if (json["twig_text"]) {
    stroke(100);
    console.log("drawing twig....");
    line(json["twig_base_x"], json["twig_base_y"], json["twig_tip_x"], json["twig_tip_y"]);
  }
  if (json["branch_text"]) {
    stroke(150);
    line(json["branch_base_x"], json["branch_base_y"], json["branch_tip_x"], json["branch_tip_y"]);
    console.log("x1 " + json["branch_base_x"]);
    console.log("x2 " + json["branch_base_y"]);
    console.log("y1 " + json["branch_tip_x"]);
    console.log("y2 " + json["branch_tip_y"]);

  }
  if (json["trunk_text"]) {
    stroke(255);
    line(json["trunk_base_x"], json["trunk_base_y"], json["trunk_tip_x"], json["trunk_tip_y"]);
  }
}

收到成功的ajax响应后,将按以下方式调用此函数。我的问题是,由于draw函数,我在js控制台中收到一个错误。

TypeError: json is undefined

我的理解是(请纠正我错了的地方)'draw'函数与'json'是否存在无关,并且将等待观察它传递什么样的对象,然后再开始抱怨参数是没有定义的。这不是JavaScript函数的想法吗?我肯定错过了什么。如果是这种情况,为什么会抱怨未定义json?

if (json["leaf_text"]) {
  $("#grow").click(
    function(e) {
      console.log("attempting ajax...");
      e.preventDefault();
      var csrftoken = getCookie('csrftoken');
      var open_parens = ($("#txt").val()).indexOf("(");
      var close_parens = ($("#txt").val()).indexOf(")");
      var child = $("#txt").val().slice(0, open_parens);
      var parent = $("#txt").val().slice(open_parens + 1, close_parens);

      $.ajax({
          url: window.location.href,
          type: "POST",
          data: {
            csrfmiddlewaretoken: csrftoken,
            child: child,
            parent: parent,
            mode: "grow"
          },
          success: function(json) {
            setup();
            draw(json);
            ...
          }
        },
        error: function(xhr, errmsg, err) {
          console.log(xhr.status + ": " + xhr.responseText);
        }

      });
  });
作者: David J. 的来源 发布者: 2016 年 1 月 24 日

回应 (1)


0

1 作者的声誉

如果使用名为json的导入,则应使用其他名称作为绘制函数的参数(例如:draw(json_bar)),或者在导入中重命名json(例如:将json作为json_foo导入)。

作者: DawidG3 发布者: 24.01.2016 10:32
32x32