0

我想用 json 数据创建一个 html 表,而不使用我在 stackoverflow 上的其他问题中看到的 js 脚本。

我有这个结构:

function visualize(json_response) {
  var err = json_response['error'];
  if (err) {
    $("#chart_div").html("<div class='alert'>" + err + "</div>");
    return;
  }
  var data = json_response['data'];
  if (data.length == 0) {

    {% elif net.ntype == "ztc" and sens.type == 2 %}
    $("#chart_div").html("<div class='info'>No data received from this contact sensor!</div>");

  }


  $("#chart_div").html('<img src="{{ static_url('img/loading.gif') }}">');

  {% if net.ntype == "ztc" and sens.type == 2 %}

  {% for d in data %} 
     $("#chart_div").append("<td>{% d %}<td>");

}

这是我的js部分。相反,html 部分是一个简单的 div 块:

<div id="chart_div" style="width: 100%; height: 400px"></div>

换句话说,我想将我的数据放入一个表中。但是我写的这个解决方案不起作用。我不知道我能做...有什么想法吗?

非常感谢!

4

1 回答 1

0

{% %}用于模板指令,它必须是Tornado 模板语法参考中给出的指令之一。 {{ }}用于转义输出。

在行中:

     $("#chart_div").append("<td>{% d %}<td>");

{% d %}应该是{{ d }}(转义)或{% raw d %}(未转义)。您还需要结束 for 循环。

编辑:我刚刚又看了一遍,看起来您正在尝试访问 Tornado 模板代码中的 JavaScript 变量(正如 Chris Francis 指出的那样)。模板代码(在花括号中)在服务器端执行;它无法访问或了解 JavaScript。

在这种情况下,您可以只使用 JQuery 来遍历响应:

jQuery.each(data, function(index, value) {
   $("#chart_div").append("<td>" + value + "<td>"); 
});
于 2012-09-21T00:27:05.673 回答