TypeError: Undefined is not JSON serializable
TypeError: Undefined is not JSON serializable
我正在使用 Flask 编写一个小应用程序。我的服务器代码如下:
@app.route('/loadNext')
def loadNext():
tmp = "Okay"
return render_template("next.html",message = {"date_to":"from","date_from":tmp,"error_stat":[30,400,21,45],"mac_length":[7,7,7,7],"mac":[["1.1.1.1","1.2.1.2","3.2.1.1","3.1.4.5","1.3.2.4","5.5.4.3","2.1.6.7"], ["6.1.1.1","1.2.3.2","3.2.1.1","3.2.4.5","1.3.2.4","5.5.4.3","2.1.6.7"], ["9.1.1.1","4.2.1.2","3.2.1.1","3.7.4.5","1.3.2.4","5.5.4.3","2.1.6.7"], ["10.1.1.1","1.2.1.2","3.2.1.1","3.6.4.5","1.3.2.4","5.5.4.3","2.8.6.7"]]})
在我的 javascript 代码中,我使用 for 循环并按如下方式访问值:
$("#loadtable").ready(function(){
alert("Inside function");
for (i = 0; i < 7; i++) {
var tmp = {{message.mac[0][i]|tojson|safe}};
alert(tmp);
}
});
但是我收到这个错误:
TypeError: Undefined is not JSON serializable
我想我不应该在这里使用循环变量。但是它的解决方案是什么?我哪里错了?
Jinja 不明白JavaScript。 Jinja 在服务器端呈现,然后 JavaScript 在客户端执行。您不能从 JavaScript 循环中获取变量 i
并在 Jinja 表达式中使用它。相反,将 JavaScript 变量设置为 Jinja 表达式,然后在循环中使用该变量。
var message = {{ message|tojson }};
for (var i = 0; i < message['mac'][0].length; i++) {
var item = message['mac'][0][i];
}
如果只是想输出数据,则不需要JavaScript。直接在 Jinja 中渲染即可。
<ul>{% for item in message.mac[0] %}
<li>{{ item }}</li>
{% endfor %}</ul>
我正在使用 Flask 编写一个小应用程序。我的服务器代码如下:
@app.route('/loadNext')
def loadNext():
tmp = "Okay"
return render_template("next.html",message = {"date_to":"from","date_from":tmp,"error_stat":[30,400,21,45],"mac_length":[7,7,7,7],"mac":[["1.1.1.1","1.2.1.2","3.2.1.1","3.1.4.5","1.3.2.4","5.5.4.3","2.1.6.7"], ["6.1.1.1","1.2.3.2","3.2.1.1","3.2.4.5","1.3.2.4","5.5.4.3","2.1.6.7"], ["9.1.1.1","4.2.1.2","3.2.1.1","3.7.4.5","1.3.2.4","5.5.4.3","2.1.6.7"], ["10.1.1.1","1.2.1.2","3.2.1.1","3.6.4.5","1.3.2.4","5.5.4.3","2.8.6.7"]]})
在我的 javascript 代码中,我使用 for 循环并按如下方式访问值:
$("#loadtable").ready(function(){
alert("Inside function");
for (i = 0; i < 7; i++) {
var tmp = {{message.mac[0][i]|tojson|safe}};
alert(tmp);
}
});
但是我收到这个错误:
TypeError: Undefined is not JSON serializable
我想我不应该在这里使用循环变量。但是它的解决方案是什么?我哪里错了?
Jinja 不明白JavaScript。 Jinja 在服务器端呈现,然后 JavaScript 在客户端执行。您不能从 JavaScript 循环中获取变量 i
并在 Jinja 表达式中使用它。相反,将 JavaScript 变量设置为 Jinja 表达式,然后在循环中使用该变量。
var message = {{ message|tojson }};
for (var i = 0; i < message['mac'][0].length; i++) {
var item = message['mac'][0][i];
}
如果只是想输出数据,则不需要JavaScript。直接在 Jinja 中渲染即可。
<ul>{% for item in message.mac[0] %}
<li>{{ item }}</li>
{% endfor %}</ul>