当前位置: 代码迷 >> JavaScript >> 如何使用AJAX在FLASK中选择一个变量(多个变量) 我的下拉列表: 阿贾克斯: 烧瓶: 回答我自己的问题:
  详细解决方案

如何使用AJAX在FLASK中选择一个变量(多个变量) 我的下拉列表: 阿贾克斯: 烧瓶: 回答我自己的问题:

热度:99   发布时间:2023-06-05 14:22:43.0

我试图从Ajax的Flask中获取一个变量。 这个想法是从HTML的下拉列表中选择一个值,然后使用Ajax将其ID传递给Flask。 该选项的ID实际上是我想从Flask导入的变量名。

例如。:

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

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

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

4->这里来的问题:通过接受我应该拿起瓶全局变量(“column_a”),根据数据“request.args.get()”,这也是“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)

回答我自己的问题:

一种可能性是创建如下所示的多个If条件。 因为我现在有一百个变量,所以听起来不易读且不容易。

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

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

  相关解决方案