TypeError: Undefined不是JSON可序列化的
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>
相关文章:
- 如何在C#中反序列化json对象
- ASP.NET MVC-自动取消序列化JSON Fetch POST
- 如何在 Express/Node.js 中反序列化 JSON 数据
- 无法在 Javascript 中反序列化 JSON 对象
- C# 序列化 JSON 对象中的 JSON 对象
- 从 JavaScript 中的序列化 JSON 对象中提取变量
- 如何在 JQuery 中序列化 JSON 对象
- 为什么我的序列化 JSON 在到达 java 脚本函数参数后被取消序列化
- c#等效于序列化json
- 将函数对象引用作为序列化json传递
- c# Web服务到javascript反序列化JSON对象
- 在反序列化JSON对象时,是否有方法将属性名称转换为小写?
- 在Ext JS存储中反序列化json数据时区分模型类型
- . asmx怪从log4javascript日志反序列化JSON blob
- 如何序列化Json javascript
- 使用JavaScriptSerializer反序列化JSON对象
- 美元http.get获取反序列化JSON,但不能将其赋值给array
- c#反序列化JSON html字符串
- Jquery在ajax调用中没有正确序列化json
- 打字稿:如何使用私有变量反序列化 JSON 对象