描述一下问题背景:

前台封装一个json字符串给后台传输数据,后台的ajax获取请求之后把接收的数据显示到前台html表格上。

jsonify:这个方法可以把字典转化为json字符串

通过jsonify()方法返回到前台界面时的相应类型为Content-Type: application/json

通过json.dumps()返回的相应类型为Content-Type:text/html

json 模块4个方法:
    json.loads() 把 json 字符串 转成 python 数据类型
    json.load(python数据类型,文件句柄) 把 json 文件 转成 python 数据类型
    json.dumps() 把 python 数据类型 转成 json 字符串
    json.dump(文件句柄) 把 python 数据类型 写入到 json文件中


下面两张图传输完数据之后,后台ajax使用alert弹出数据结果,显示都是object

界面显示是undefined

发送请求的代码:

1 @app.route('/table')
2 def get_table():
3 res=[]
4 for tup in utils.get_world():
5 res.append({"dt": tup[0], "c_name": tup[1], "confirm":tup[2],
6 "heal": tup[3], "dead": tup[4], "nowConfirm": tup[5]})
7 # print(res)
8 return jsonify({"data": res})

接收请求的代码:

 1 //给表格添加数据
2 function get_table() {
3 $.ajax({
4 async: false,
5 url: "/table",
6 // dataType:"json",
7 success: function (data) {
8 var table_data=data.data;
9 for(var i=0;i<table_data.length;i++){
10 console.log(table_data[i]);
11 }
12 var appendHTML = "";
13 if($(".map-table tbody tr").length>0){
14 $(".map-table tbody tr").remove();
15 }
16 for(var i=0; i<24; i++){
17 appendHTML = "<tr align='center' style='color:aquamarine;' ><td>"+
18 table_data[i].dt+"</td><td>"+
19 table_data[i].c_name+"</td><td>"+
20 table_data[i].confirm+"</td><td>"+
21 table_data[i].heal+"</td><td>"+
22 table_data[i].dead+"</td><td>"+
23 table_data[i].nowConfirm+"</td><td>"+
24 (i+1)+"</td></tr>";
25 $(".map-table tbody").append(appendHTML);
26 }
27 }
28 })
29 }
30 get_table();
31 setInterval(get_table,1000000);

前台html:

 1 <div class="map-table">
2 <table align="center" style="margin:3px" cellspacing="7px">
3 <thead>
4 <tr style="color: #FFB6C1" >
5 <th>时间</th>
6 <th>国家</th>
7 <th>累计确诊</th>
8 <th>累计治愈</th>
9 <th>累计死亡</th>
10 <th>现存确诊</th>
11 <th>排名</th>
12 </tr>
13 </thead>
14 <tbody>
15 </tbody>
16 </table>
17 <div class="chart"></div>
18 <div class="panelFooter"></div>
19 </div>
20 </div>

 这里要解决的问题关键就是要知道数据到底传过来了没有,而且为什么数据会显示object

var table_data=data.data;
alert(table_data)
这段代码运行后就会弹出一堆object,因为js是没办法直接打印显示字典内容的,alert方法是显示字符串的
但是js不支持Python字典直接转化打印,所以就会把所有字典对象转化成object显示。

但是我们也有办法访问dict里的数据项:


这是封装的res数据,里面是list[ ] + 字典 
也就是这样的格式[{ },{ },...]
既然res是list格式的,那我们就可以先通过索引下标的方式访问到不同的字典数据项,也就是 data[index].key的方式

for(var i=0; i<24; i++){
appendHTML = "<tr align='center' style='color:aquamarine;' ><td>"+
table_data[i].dt+"</td><td>"+
table_data[i].c_name+"</td><td>"+
table_data[i].confirm+"</td><td>"+
table_data[i].heal+"</td><td>"+
table_data[i].dead+"</td><td>"+
table_data[i].nowConfirm+"</td><td>"+
(i+1)+"</td></tr>";
$(".map-table tbody").append(appendHTML);
}

通过输出console在网页F12可以看到object的具体内容,如果显示object说明数据已经传输成功了,但是js里不可以
直接转化输出这些Python对象的字符串形式,访问的时候也要细心!
下面的图的object的具体内容:

Tomorrow the birds will sing.

 


【已解决】ajax和flask路由传json格式数据出现undefined和object错误的更多相关文章

  1. ajax请求后台,返回json格式数据,模板!

    添加一个用户的时候,需要找出公司下所有的部门,和相应部门下的角色,利用ajax请求,实现联动技术.将返回的json格式数据,添加到select标签下. <script type="te ...

  2. 在thinkphp5.0中调用ajax时, 返回的JSON 格式数据在html前台不能用时

    在thinkphp5.0中调用ajax时,如果控制器返回的数据为json格式,视图层接收到返回值即为json格式的数据,此时应该把 JSON 文本转换为 JavaScript 对象,方便调用.具体代码 ...

  3. Flask接口返回JSON格式数据自动解析

    一 自定义一个response类 from flask import Response, jsonify # 定义response返回类,自动解析json class JSONResponse(Res ...

  4. Django学习——ajax发送其他请求、上传文件(ajax和form两种方式)、ajax上传json格式、 Django内置序列化(了解)、分页器的使用

    1 ajax发送其他请求 1 写在form表单 submit和button会触发提交 <form action=""> </form> 注释 2 使用inp ...

  5. (24)ajax上传json格式的数据

    urs.py from django.conf.urls import urlfrom django.contrib import adminfrom app01 import viewsurlpat ...

  6. 导入数据任务(id:373985)异常, 错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件

    小程序导入,别人导出的数据库json文件,错误信息如下: 导入数据库失败, Error: Poll error, 导入数据任务(id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容 ...

  7. ajax往后台传json格式数据报415错误

    问题描述: ajax往后台传json格式数据报415错误,如下图所示 页面代码 function saveUser(){ var uuId = document.getElementById(&quo ...

  8. from表单前后端数据编码格式-Ajax发送json格式数据-Ajax发送文件-Django自带序列化组件-Ajax结合sweetalert

    目录 一:前后端传输数据的编码格式(contentType) 1.研究post请求数据的编码格式 2.可以朝后端发送post请求的方式 3.前后端传输数据的编码格式 4.研究form表单 5.当for ...

  9. ajax接收遍历处理json格式数据

    ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面. 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的jso ...

  10. 使用jQuery发送POST,Ajax请求返回JSON格式数据

    问题: 使用jQuery POST提交数据到PHP文件, PHP返回的json_encode后的数组数据,但jQuery接收到的数据不能解析为JSON对象,而是字符串{"code" ...

随机推荐

  1. Java JVM——3.运行时数据区概述及线程

    运行时数据区概述 在JVM 中的位置 内部划分 当我们通过前面的:类的加载 → 验证 → 准备 → 解析 → 初始化 这几个阶段完成后,执行引擎就会对我们的类进行使用,同时执行引擎将会使用到我们的运行 ...

  2. 教程|在矩池云使用 Stable Diffusion web UI v1.5 模型和 ControlNet 插件

    今天给大家介绍下如何在矩池云使用 Stable Diffusion web UI v1.5 模型和 Stable Diffusion ControlNet 插件. 租用机器 租用机器需要选择内存大于8 ...

  3. 在矩池云上使用R和RStudio

    租用机器 在矩池云租用机器的时候,系统环境里搜索:R,选择 R4.2 镜像,如果需要使用RStudio,还需要在高级选项中新增一个自定义端口:8787,然后点击租用即可. 使用 JupyterLab ...

  4. DataGear数据可视化分析平台介绍

    DataGear 是一款开源免费的数据可视化分析平台,自由制作任何您想要的数据看板,支持接入SQL.CSV.Excel.HTTP接口.JSON等多种数据源. 系统特点: 友好的数据源接入 支持运行时接 ...

  5. 【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包

    问题描述 在之前的一篇博文中,介绍了在App Service中抓取网络日志: 抓取Windows的网络包:[应用服务 App Service]App Service中抓取网络日志 抓取Linux的网络 ...

  6. 树莓派修改根文件系统为f2fs

    目录 前言 操作简述 我的实际操作步骤 1. 准备 2. 查看树莓派分区信息 3. 备份根分区 4. 格式化树莓派TF卡根分区为f2fs文件系统 5.恢复备份 前言 在TF卡.固态硬盘之类的nand存 ...

  7. 使用Kubernetes搭建带有ik分词的Elasticsearch集群

    创建好带有Ik分词的es镜像,并上传到镜像仓库中,创建镜像可参考链接中的文档 https://www.cnblogs.com/hi-lijq/p/16895206.html 编写es_cluster- ...

  8. 使用Mockito与Squaretest进行单元测试.

    项目开发过程中,不少公司都要求写单元测试的代码,可以提高代码的质量,并且可以减少出现BUG的概率. 对于中小型公司来说,对单元测试不做硬性要求,不写最好.因为还是需要一定的工作量,在保证代码质量和性能 ...

  9. vscode中输入``自动将光标后面一个单词选中,左右加入<w>和</w>标签 - snippets 的命令调用

    需求 vscode中输入``自动将光标后面一个单词选中,左右加入和标签 步骤0 准备需要安装插件 vim - 这里的点击两次按键激活的快捷键,这个插件可以设置 macros - 一次执行多个命令的插件 ...

  10. vue2init vue2z

    <template> <div> </div> </template> <script> export default { name: 'b ...