簡體   English   中英

如何使用AJAX在FLASK中選擇一個變量(多個變量)

[英]How to pick up one variable (among several) in FLASK, using AJAX

我試圖從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'

然后,我得到了全局變量值而不是簡單的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM