Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从动态相关下拉列表中获取所选选项-使用Flask(Python)_Javascript_Python_Flask_Flask Sqlalchemy_Flask Wtforms - Fatal编程技术网

Javascript 从动态相关下拉列表中获取所选选项-使用Flask(Python)

Javascript 从动态相关下拉列表中获取所选选项-使用Flask(Python),javascript,python,flask,flask-sqlalchemy,flask-wtforms,Javascript,Python,Flask,Flask Sqlalchemy,Flask Wtforms,我试图在动态相关下拉列表中检索所选选项,但使用request.form.get只能获取None。我的示例在下图中生成一个下拉列表: 下面是生成下拉列表的完整代码,它基于对的答案 request.form.get依赖HTMLname属性,将name属性添加到每个select下拉列表中,例如: 马里奥 谢谢,@vremes。现在我使用request.form.get得到了一个正确的结果,但出现了一个新错误。我编辑了原始问题以显示问题所在。我复制/粘贴了你的代码并进行了测试,我无法复制你的问题,我

我试图在动态相关下拉列表中检索所选选项,但使用
request.form.get
只能获取
None
。我的示例在下图中生成一个下拉列表:

下面是生成下拉列表的完整代码,它基于对的答案


request.form.get
依赖HTML
name
属性,将
name
属性添加到每个
select
下拉列表中,例如:


马里奥

谢谢,@vremes。现在我使用request.form.get得到了一个正确的结果,但出现了一个新错误。我编辑了原始问题以显示问题所在。我复制/粘贴了你的代码并进行了测试,我无法复制你的问题,我选择了N64->Mario Kart,我这边只显示了Mario和Luigi选项,我使用的是Firefox。我想问题是因为我将所有“角色”/“游戏”都包括在“选项”中,但只有每个“游戏”的“角色”应该在场。包含分隔的“选项”实际上是由函数“game.change(function(evV)”,每当我决定要玩游戏时完成的。因此,只要包含“name=”system,代码就可以正常工作,不包含任何“选项”。包含“选项”应由函数处理。我接受了您的回答,因为您提到了“名称”属性。非常感谢!我编辑了我的问题以包含完整的固定代码。
from flask import Flask, render_template_string, request, redirect

app = Flask(__name__)

@app.route('/', methods=["GET", "POST"])
def index():

    systems = {
        'PlayStation': {'Spyro': ['1', '2', '3'], 'Crash': ['4', '5', '6'], 'Ico': ['7', '8']},
        'N64': {'Mario Kart': ['Mario', 'Luigi'], 'Superman': ['12', '13', '14']}
    }
    
    if request.method == "POST":

        systemGet = request.form.get("system")
        gameGet = request.form.get("game")
        charactersGet = request.form.get("characters")
        
        print(systemGet)
        print(gameGet)
        print(charactersGet)

        return redirect('temp.html')

    return render_template_string(template, systems=systems)
    
    

template = """
<!doctype html>
<form method="POST">
    <select id="system">
        <option></option>
    </select>
    <select id="game"></select>
    <select id="characters"></select>
    <button type="submit">Play</button>
</form>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
    "use strict";

    var systems = {{ systems|tojson }};

    var form = $('form');
    var system = $('select#system');
    var game = $('select#game');
    var characters = $('select#characters');

    for (var key in systems) {
        system.append($('<option/>', {'value': key, 'text': key}));
    }

    system.change(function(ev) {
        game.empty();
        game.append($('<option/>'));

        var games = systems[system.val()];

        for (var i in games) {
            game.append($('<option/>', {'value': i, 'text': i}));
        }
    });
    
    game.change(function(evV) {
        characters.empty();
        characters.append($('<option/>'));

        var games = systems[system.val()][game.val()];

        for (var i in games) {
            characters.append($('<option/>', {'value': games[i], 'text': games[i]}));
        }
    });

</script>
"""

if __name__ == '__main__':
    app.run()
from flask import Flask, render_template_string, request, redirect

app = Flask(__name__)

@app.route('/', methods=["GET", "POST"])
def index():

    systems = {
        'PlayStation': {'Spyro': ['1', '2', '3'], 'Crash': ['4', '5', '6'], 'Ico': ['7', '8']},
        'N64': {'Mario Kart': ['Mario', 'Luigi'], 'Superman': ['12', '13', '14']}
    }
    
    if request.method == "POST":

        systemGet = request.form.get("system")
        gameGet = request.form.get("game")
        charactersGet = request.form.get("characters")
        
        print(systemGet)
        print(gameGet)
        print(charactersGet)

        return redirect('temp.html')

    return render_template_string(template, systems=systems)
    
    

template = """
<!doctype html>
<form method="POST">
    <select id="system" name="system">
    </select>
    
    <select id="game" name="game">
    </select>
    
    <select id="characters" name="characters">
    </select>
        
    <button type="submit">Play</button>
</form>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
    "use strict";

    var systems = {{ systems|tojson }};

    var form = $('form');
    var system = $('select#system');
    var game = $('select#game');
    var characters = $('select#characters');

    for (var key in systems) {
        system.append($('<option/>', {'value': key, 'text': key}));
    }

    system.change(function(ev) {
        game.empty();
        game.append($('<option/>'));

        var games = systems[system.val()];

        for (var i in games) {
            game.append($('<option/>', {'value': i, 'text': i}));
        }
    });
    
    game.change(function(evV) {
        characters.empty();
        characters.append($('<option/>'));

        var games = systems[system.val()][game.val()];

        for (var i in games) {
            characters.append($('<option/>', {'value': games[i], 'text': games[i]}));
        }
    });

</script>
"""

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