如何在 Python 中存储 JavaScript 动态生成的 HTML 表单元素?

68 阅读2分钟

1、问题背景

在开发网站时,经常需要向用户展示一个表单以供其输入信息。传统上,我们使用 HTML 代码来定义表单,但是如果需要让用户动态地添加或删除表单的输入字段,那么使用 HTML 代码就变得非常不方便。

为了解决这个问题,我们可以使用 JavaScript 来动态地生成 HTML 表单元素。例如,我们可以使用 jQuery 库来添加和删除表单的输入字段。然而,当表单被提交时,我们需要在 Python 中处理这些动态生成的表单元素。如果我们使用传统的方法,那么我们就需要遍历所有的表单元素,并根据每个元素的名称来获取其值。这显然非常不方便。

2、解决方案

为了简化在 Python 中处理动态生成的表单元素,我们可以使用 JavaScript 将数据序列化为 JSON 字符串,然后将该字符串作为表单提交的数据。在 Python 中,我们可以使用 json 模块来解析 JSON 字符串,并将其转换为一个 Python 字典。这样,我们就可以轻松地获取表单中每个元素的值。

下面是一个代码示例,展示了如何在 Python 中存储 JavaScript 动态生成的 HTML 表单元素:

<form action="/submit_form" method="post">
  <input type="text" id="field1" name="field1">
  <input type="text" id="field2" name="field2">
  <input type="text" id="field3" name="field3">
  <input type="submit" value="Submit">
</form>

www.jshk.com.cn/mb/reg.asp?…

// Get the form element
const form = document.getElementById('form');

// Add an event listener for the submit event
form.addEventListener('submit', (event) => {
  // Prevent the form from submitting
  event.preventDefault();

  // Get the values of the form elements
  const data = {
    field1: document.getElementById('field1').value,
    field2: document.getElementById('field2').value,
    field3: document.getElementById('field3').value,
  };

  // Serialize the data to JSON
  const json_data = JSON.stringify(data);

  // Send the data to the server
  const request = new XMLHttpRequest();
  request.open('POST', '/submit_form');
  request.setRequestHeader('Content-Type', 'application/json');
  request.send(json_data);
});
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/submit_form', methods=['POST'])
def submit_form():
  # Get the JSON data from the request
  json_data = request.get_json()

  # Parse the JSON data
  data = json.loads(json_data)

  # Get the values of the form elements
  field1 = data['field1']
  field2 = data['field2']
  field3 = data['field3']

  # Do something with the data

  return jsonify({'success': True})

if __name__ == '__main__':
  app.run()

在这个示例中,我们使用 jQuery 来动态地添加和删除表单的输入字段。当表单被提交时,我们将表单中每个元素的值序列化为 JSON 字符串,然后将该字符串作为表单提交的数据。在 Python 中,我们使用 Flask 框架来处理表单提交请求。我们使用 json 模块来解析 JSON 字符串,并将其转换为一个 Python 字典。然后,我们可以轻松地获取表单中每个元素的值。