【发布时间】:2021-02-24 16:22:09
【问题描述】:
我目前正在使用 Python/Flask 和一些 Javascript 制作一个小游戏,但是当我提交表单时,我只能收到一些值,但其他值不存在:
这是我的表格:
<form name="question_form" id="question_form" action="{{ url_for('question') }} " method='POST' onsubmit="return validateAnswer()">
<p class="question">{{ question }}</p>
<button name="given_answerA" type="submit" class="clickable" id="questions_A" value="{{ answers[0] }}">{{ answers[0] }}</button>
<button name="given_answerB" type="submit" class="clickable" id="questions_B" value="{{ answers[1] }}">{{ answers[1] }}</button>
<button name="given_answerC" type="submit" class="clickable" id="questions_C" value="{{ answers[2] }}">{{ answers[2] }}</button>
<button name="given_answerD" type="submit" class="clickable" id="questions_D" value="{{ answers[3] }}">{{ answers[3] }}</button>
<input name="nb_question" id="nb_question" type="hidden" value="{{ nb }}"/>
<input name="choice_good" id="choice_good" type="hidden" value="{{ choice_good }}"/>
</form>
在我的烧瓶应用程序中,这是我所做的:
answered = request.form.get('given_answerA')
correct_answer = request.form.get('choice_good')
nb_question = int(request.form.get('nb_question')
我有“correct_answer”和“nb_question”的结果,但 given_answerA 不存在,我尝试打印 request.form 来查看内容,我只看到了 choice_good 和 nb_question 的值。
我尝试用相同的名称重命名所有按钮,更改为“button type=submit”“input type=submit”,但似乎它们都不起作用..
有什么想法吗?谢谢!
编辑:似乎是 JS 函数(我忘了包括是问题)在这里:
function validateAnswer() {
var answered = document.activeElement.id;
var audio = document.getElementById("audio_validate");
var form = document.getElementById("question_form");
var background_audio = document.getElementById("background_audio");
var body = document.getElementsByTagName('body')[0];
var filename = 'static/images/background_' + answered + ".jpg";
body.style.backgroundImage = 'url('+filename+')';
background_audio.pause();
audio.play();
setTimeout(function(){
form.submit();
}, 20000);
return false;
如果我一直返回 false,按钮是空的(所以我认为它在不知道按钮被点击的情况下使用 JS 提交) 如果我保持返回 true,则不会执行超时,也不会暂停和播放音乐,但会发送 post 值;我需要这个“20”秒的延迟来正确播放音乐并制造悬念,因为这是一个想成为百万富翁的游戏
【问题讨论】:
-
我在网络浏览器上直接查看了“网络”,只发送了最后两个值
-
validateAnswer是不是搞砸了? -
该表单对我有用,但我删除了
validateAnswer,因为您没有发布该功能。 -
我编辑了我的问题,谢谢
标签: javascript python flask jinja2