如何在前端JavaScript中访问Python(Flask)传递的数组(JSON)?

2024-03-01

我是一个真正使用 Flask 框架(通常是客户端-服务器)的菜鸟,所以请耐心等待。我有一个基本的 HTML 模板文件,其中包含一些 Flask(使用 {% ... %} 表示法)从 python 文件传递​​ JSON 对象。现在,作为一个简单的健全性检查,它输出的内容motifs(数组的数组)作为单独的行(<li>)在无序列表中(<ul>).

我想要它做的是使用motifsJavaScript 脚本中的数组数组作为我正在尝试执行的可视化的数据。我尝试将 Flask 脚本混合到 JavaScript 中<script>迭代出 JavaScript 数组的标签,但收到一个错误,该脚本标签不喜欢 Flask 表示法(Uncaught SyntaxError: Unexpected token }。那么如何让 Flask 脚本提取数组以便在 JavaScript 脚本中使用呢?我意识到我可能误解了这里的一些事情(也许是 JSON 的本质?)。我将不胜感激任何朝着正确方向的推动。谢谢!

下面我将我的 html 模板与创建无序列表的 Flask 脚本一起包含在内,我还包含了我在 a 中使用 Flask 脚本的失败尝试<script>标签。那么如何在 JavaScript 中成功访问数组(JSON)呢?

index.html(模板文件 - 为清楚起见,此处进行了简化):

<!DOCTYPE html>
<head>
<title></title>
</head>
<body>

<p>Here are some motifs:</p>
    <ul>
        {% for motif in motifs %}
        <li>{{motif}}</li>
        {% endfor %}
    </ul>
<script>one of a few js scripts</script>
</body>
</html>

上述文件的输出如下所示(缺少未复制的要点):

以下是一些主题:

{'基因1':1,'基因2':1,'基因3':7,'基因4':7,'基因5':1}

{'基因1':7,'基因2':4,'基因3':10,'基因4':5,'基因5':2}

{'基因1':7,'基因2':1,'基因3':8,'基因4':5,'基因5':8}

{'基因1':2,'基因2':4,'基因3':6,'基因4':1,'基因5':9}

{'基因1':3,'基因2':8,'基因3':2,'基因4':7,'基因5':8}

{'基因1':1,'基因2':5,'基因3':1,'基因4':9,'基因5':5}

{'基因1':3,'基因2':5,'基因3':6,'基因4':10,'基因5':9}

{'基因1':2,'基因2':10,'基因3':7,'基因4':5,'基因5':10}

{'基因1':5,'基因2':5,'基因3':10,'基因4':10,'基因5':5}

{'基因1':10,'基因2':4,'基因3':4,'基因4':6,'基因5':4}

下面是我尝试访问失败的情况<script>Flask 传递的数组(JSON 对象):

<script>
var motifValuesArray = [];
var index = 0; // an iterator to assign indexes in the javascript array
{% for motif in motifs %}
    motifValuesArray[index] = {motif};
    console.log(motifValuesArray[index]);
{% endfor %}        
</script>

所以你的原因<script>试图失败是因为您正在尝试运行 jinja2 代码 http://jinja.pocoo.org/docs/(默认情况下 Flask 附带的模板引擎)在 Web 浏览器中。Web 浏览器没有 python 解释器,更不用说构建在 python 之上的模板引擎了。 http://www.w3.org/TR/html401/interact/scripts.html

话虽如此,您可以通过多种方式将 JSON 数组从 Flask 获取到客户端。也许最简单的方法是将数组作为直接 HTML 传递并解析 html。 https://stackoverflow.com/questions/9579721/convert-html-table-to-array-in-javascript但这不是很流畅,如果您的数组变得非常大,那么速度可能会非常慢。

为了彻底起见,这个 SO 答案介绍了如何直接从 jinja2 做事。 https://stackoverflow.com/questions/11178426/how-can-i-pass-data-from-python-flask-framework-to-javascript

对于我的示例,我将创建一个在页面加载时调用的 JavaScript 函数。该 javascript 函数对 Flask 应用程序进行 ajax 调用,接收 JSON 格式的数组,最后解析该对象以返回该数组。

JavaScript

$(document).ready(function() {
    var request = $.ajax({
        type: "POST",
        url: "/example_array/",
        data: {"name":""}, // if you wanted to specifiy what list then pass an actual name
        dataType: "html"
    });

    request.done(function(JSON_array) {
        array_data = JSON.parse(JSON_array)["array"]
        //from here you have your array to play with
    });
});

烧瓶文件

from flask import jsonify

@app.route("/example_array/")
def example():
    list = get_list() # however you get your list data, put it here
    return jsonify(array=list)

@app.route("/")
def index():
     return render_template("home_page.html")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在前端JavaScript中访问Python(Flask)传递的数组(JSON)? 的相关文章

随机推荐

  • 如何禁用父小部件中的所有用户输入小部件(按钮、条目......)?

    我正在使用 Python 和 Tkinter 设计 GUI 注册用户输入命令所需的所有按钮和条目都放置在主目录中frame http effbot org tkinterbook frame htm是他们的子部件 我想知道是否可以通过将一些
  • TensorFlow 对象检测 api:使用预训练模型更改训练时的类数时的分类权重初始化

    我不仅想利用特征提取器预训练权重 还想利用特征映射层的分类器 定位预训练权重 使用张量流对象检测 API 来微调张量流对象检测模型 SSD 当我的新模型的类数量与我用于微调检查点的预训练模型不同时 TensorFlow 对象检测 API 将
  • lambda 比 python 中的函数调用慢,为什么

    我认为lambda比函数调用更快 但是经过测试 我发现我错了 函数调用肯定比 lambda 调用快 有人能告诉我为什么吗 那么如何加快Python中的函数调用速度呢 我正在使用 Ubuntu 14 04 和 Python 2 7 6 gt
  • 使用 docker 运行 dotnet 1.1

    我正在尝试在我的 Mac 上运行 NET Core 应用程序 我正在使用 VS Core 并将项目升级到 NET 1 1 当我通过 VSCode 运行它时一切正常 但是当我使用 Docker 运行它时它失败了 我执行以下步骤 dotnet
  • 使用 jQuery 将数据从一个表的选定行复制到另一个表

    我有两张表 其中一张有我的产品数据 例如名称和条形码 另一个是空的 我想复制产品表 仅限选定的行 通过 jQuery 进入第二个表 table style max width 50 thead tr th bar code th th pr
  • 语法错误,意外的 T_SL

    我对 php 相当陌生 我正在使用一个脚本来创建一个名为 mime mailer 的函数 该函数本质上允许我使用 PHP 发送能够使用 CSS 设计的电子邮件 而不仅仅是纯文本 然而 在我的注册脚本中 我尝试编写一些发送 CSS 电子邮件的
  • 如何计算向量的置信区间? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个向量 vector lt c 12 17 24 35 23 34 56 如何计算 R 中该向量的置信区间 90 99 95 这是我想
  • 在 Meteor Js 中加密 Mongodb 数据

    插入文档时是否可以对特定集合的某些 Mongodb 字段进行加密 然后在发布合集的同时解密 我不确定这对于您的用例来说是否太过分了 Mylar http css csail mit edu mylar 是一个支持客户端加密的 Meteor
  • Android Studio 快捷方式,如 Eclipse

    I am new to Android Studio and want to know about shortcuts In Eclipse we use shift ctrl O for importing In Android Stud
  • Web Crypto API 在 AES 解密时抛出“DOMException”

    我想执行基本的 AES CBC 解密 我有字符串encData使用 128 位密钥加密rawKey 初始化向量defaultIV为零 我只想使用 Web Crypto API 而不使用第三方库 可以做吗 window crypto subt
  • SBCL:将 Hunchentoot 应用程序部署为可执行文件

    我开始使用 SBCL Common Lisp 并希望使用 Hunchentoot 开发一个小型 Web 应用程序 为了便于部署 我计划使用 sb ext save lisp and die 将所有内容保存在二进制文件中 因为我可以忍受大输出
  • 以编程方式设置 closereason

    我想在表单内调用 This Close 后设置表单的 CloseReason 通常 此表单会通过调用 This Close 自行关闭 但我想询问用户是否真的想要关闭表单 并发送包含一些信息的 mbox 但我有这个 protected ove
  • Angular 6 ngFor 按键分组的表列表

    我的 Angular 6 应用程序需要显示一个表格列表 其中表格是对其组成元素的一组化学分析 假设我有金属合金A 我对它进行了不同的化合物分析 找到了它的化学成分 Fe 0 001 Cu 0 042 等 这是我的数据源 它只是一个带有模拟的
  • 在 Laravel 5.3 中为数据库中的图像添加水印

    我正在尝试使用 Intervention Image 包在 Laravel 数据库中的图像上添加水印 在我的数据库表中 我保存图像的路径 我在模型中使用访问器来访问图像路径的字段 但收到此错误 方法插入不存在 这是我的模型 这是我的刀片 p
  • ServerSocket 被从控制台寻求输入的线程阻塞

    谁能告诉我为什么 ServerSocket 构造函数永远不会在新线程中返回 我从未看到 Opened 消息打印到控制台 似乎主线程通过过快地进入 readLine 来阻止服务器套接字线程运行 public class Main public
  • 将 Swagger 添加到 Dropwizard 应用程序,需要提供 SwaggerBundleConfiguration 实例吗?

    我对所有这些框架都非常陌生 所以请尝试并耐心等待我 感觉应该是一个非常简单的事情 我正在尝试学习将 Swagger 集成到现有 Dropwizard 应用程序中以生成 API 文档的过程 最好使用 Swagger UI 界面 以便它对于尝试
  • 如何向 tkinter 标签添加左边框或右边框

    下面的代码 import Tkinter as tk root tk Tk labelA tk Label root text hello grid row 0 column 0 labelB tk Label root text worl
  • 使用隐藏 IFrame 下载 PHP 文件而不保存

    我提前为令人困惑的问题措辞表示歉意 但我不知道如何表达 我本质上在数据库中有一个字符串 我打算将其提供给用户下载 我该怎么做呢 我试图使用ajax 但我不知道如何去做 当按下下载链接时执行以下 jquery 代码 ajax url inde
  • 根据州级数据制作加权美国地图

    我有一个州级数据列表 其中包含每个州的数字 例如 AL 10 5 AK 45 6 AZ 23 4 AR 15 0 我想把它做成一个加权地图 最暗的地方数字最高 最亮的地方数字最低 有没有什么软件 或者java或python库可以生成这样的图
  • 如何在前端JavaScript中访问Python(Flask)传递的数组(JSON)?

    我是一个真正使用 Flask 框架 通常是客户端 服务器 的菜鸟 所以请耐心等待 我有一个基本的 HTML 模板文件 其中包含一些 Flask 使用 表示法 从 python 文件传递 JSON 对象 现在 作为一个简单的健全性检查 它输出