【问题标题】:How to pick up one variable (among several) in FLASK, using AJAX如何使用 AJAX 在 FLASK 中获取一个变量(在几个变量中)
【发布时间】:2019-03-02 19:32:38
【问题描述】:

我正在尝试从 Ajax 获取 Flask 中的变量。这个想法是从 HTML 的下拉列表中选择一个值,然后使用 Ajax 将其 ID 传递给 Flask。 option的ID其实就是我要从Flask导入的变量名。

例如:

1-> 我选择下拉列表中的第一个选项,其 ID 为 'column_a';

2-> 在 Ajax 中,从所选选项中提取的 ID,我使用变量 'labels_x' 传递给 Flask;

3-> 在 Flask 中,我使用相同的变量名 'labels_x' 来接收来自 Ajax 的数据;

4->问题来了:我应该根据通过'request.args.get()'收到的数据在Flask('column_a')中获取全局变量,这也是'column_a'。但我就是不能。我得到的只是一个字符串'column_a'。不是存储在我想要的全局变量中的列表的值。

我在这里做错了什么?


我的下拉列表:

<select name="select_label_1" id="select_label_1" class="custom-select select_label">
    <option value="{{ column_a }}" id='{{ column_a }}'>{{ label_a }}</option>
    <option value="{{ column_b }}" id='{{ column_b }}'>{{ label_b }}</option>
    <option value="{{ column_c }}" id='{{ column_c }}'>{{ label_c }}</option>
</select>


阿贾克斯:

labels_x_selected = $("#select_label_1").children(":selected").attr("id") || 0;



// AJAX FOR LABELS
// ################
$.ajax({
  url: "/home/data_analysis_labels",
  type: "GET",
  data: {labels_x: labels_x_selected},
  success: function(data) {
    $("#labels___").html(data);
  },
  error: function(xhr) {
    alert('error - must try again and handle it');
  }
});


烧瓶:

@blueprint.route('/data_analysis_labels', methods=['GET', 'POST'])
@login_required
def data_analysis_labels():

    global column_a
    global column_b
    global column_c

    labels_x = request.args.get('labels_x', default='nothing received', type=str)

    return jsonify(labels_x)

【问题讨论】:

    标签: javascript python jquery ajax flask


    【解决方案1】:

    回答我自己的问题:

    其中一种可能性是创建多个 If 条件,如下所示。它只是听起来不太易读和容易做,因为我现在有一百个变量。

    if labels_x == 'column_a':
        labels_x = column_a
    else: labels_x = 'nothing received 2'
    

    然后我得到全局变量值而不是一个简单的字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 2013-11-04
      • 2014-01-22
      相关资源
      最近更新 更多