【问题标题】:Html table from json data without javascript没有javascript的json数据的html表
【发布时间】:2012-09-12 23:12:51
【问题描述】:

我想用 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>

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

非常感谢!

【问题讨论】:

  • 那不是 JavaScript...
  • 但是函数在js脚本中...
  • 是的,我的意思是所有{% ... %} 的东西在做什么?
  • 对不起,我的英语不太好。这是一个龙卷风模板......我从龙卷风网络服务器检索数据并将它们放入数据变量中。接下来,我想用 {timestamp : value} 的数据创建一个表。
  • 好的,接下来要做的就是看看控制台中显示了哪些错误。在我看来,好像您正试图在一个脚本中混合服务器端和客户端代码!

标签: javascript django-templates tornado


【解决方案1】:

{% %} 用于模板指令,它必须是Tornado template syntax reference 中给出的指令之一。 {{ }} 用于转义输出。

行内:

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

【讨论】:

  • 对对!我更改了语句,现在出现此错误:File "sensordata_html.generated.py", line 316, in _execute for d in data: # sensordata.html:247 (via base.html:200) NameError: global name 'data' is not defined 我必须更改 fot 循环? html页面中没有定义数据?只在js部分?谢谢!!!
  • 因为当你有 {{}} 时,它是你放在那里的一个变量,当你想要一个语句时,你放了 {% %}。并且您必须在 self.render 中传递要放入 {{}} 的变量,例如 self.render("miaw.html", cat="black cat") 和模板

    hi, am {{cat}}

  • 正如 Abdelouahab Pp 所说,花括号中的部分是 python 代码。因此,需要定义变量,例如 data。您可以通过将它们作为关键字参数传递给 RequestHandler 渲染方法来做到这一点。
  • 如果我写怎么办:{% if net.ntype == "ztc" and sens.type == 2 %} for (var i=0; i&lt;data.length; i++) { $("#chart_div").append("&lt;td&gt;data[i]&lt;td&gt;"); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 2019-07-13
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多