Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript+;django-typeError:X未定义_Javascript_Json_Ajax_Django_P5.js - Fatal编程技术网

javascript+;django-typeError:X未定义

javascript+;django-typeError:X未定义,javascript,json,ajax,django,p5.js,Javascript,Json,Ajax,Django,P5.js,我正在使用p5.js来使用Django后端提供的json数据进行一些绘图。我在脚本元素中的html文档的基本级别定义了my 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(jso

我正在使用p5.js来使用Django后端提供的json数据进行一些绘图。我在脚本元素中的html文档的基本级别定义了my 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);
        }

      });
  });

如果使用名为json的导入,则应使用不同的名称作为draw函数的参数(例如:draw(json_-bar)或在导入中重新命名json(例如:将json作为json_-foo导入)。

如果使用名为json的导入,则应使用不同的名称作为draw函数的参数(例如:draw(json_-bar)或在导入中重新命名json)(例如:将json作为json_foo导入)。

您是否验证在成功处理程序中收到了
json
?否则,
setup()
是否可能引用了
json
某个地方?@sthzg我确实验证了它,不,它在setup()中没有引用。实际上,当我按“grow”按钮时,json正在正常工作,但当我重新加载页面时,控制台中会出现typeError。在开发工具中,typeError旁边应该有一个指向脚本中导致异常的行的链接。此外,在Chrome的选项卡
Sources
下有一个按钮
Pause on exceptions
(这是一个暂停图标)。如果单击该图标,然后重新加载页面,它应该在引发此异常的位置停止。这可能有助于隔离代码中发生此情况的确切位置。在上次编辑之前没有注意到If块…(就在$(“#grow”)处理程序之前)。这是一个复制+粘贴错误吗?您是否验证您在成功处理程序中收到了
json
?否则,
setup()
是否可能引用了
json
某个地方?@sthzg我进行了验证,没有,它在setup()中没有引用。实际上,当我按“grow”按钮时,json正在正常工作,但当我重新加载页面时,控制台中会出现typeError。在开发工具中,typeError旁边应该有一个指向脚本中导致异常的行的链接。此外,在Chrome的选项卡
Sources
下有一个按钮
Pause on exceptions
(这是一个暂停图标)。如果单击该图标,然后重新加载页面,它应该在引发此异常的位置停止。这可能有助于隔离代码中发生此情况的确切位置。在上次编辑之前没有注意到If块…(就在$(“#grow”)处理程序之前)。这是复制+粘贴错误吗?