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
依赖HTMLname
属性,将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()