首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当我尝试在模式中提交表单时,我收到一个错误的请求错误

当我尝试在模式中提交表单时,我收到一个错误的请求错误
EN

Stack Overflow用户
提问于 2018-06-07 00:34:29
回答 1查看 332关注 0票数 0

我试图允许用户将他们的gematria计算提交到一个文本文件中,这样我就可以在提交到数据库之前手动检查它们;因此,我在一个模式中放置了一个简单的表单,输入type=为“submit”,但我一直收到一个400错误的请求错误,我不知道为什么它不能工作。

我将Python3.6服务器端与flask结合使用,而不是将bootstrap与html结合使用。

服务器端:

代码语言:javascript
复制
if request.form["action"] == "Send":
    Name = request.form["name"]
    Email = request.form["mail"]
    GematriaNum = request.form["gematria"]
    Source = request.form["source"]
    Calc = request.form["calc"]
    LIT = request.form["transliteration"]
    LANGY = request.form["translation"]
    NEWSL = request.form["newsletter"]
    BODYOF = Name + Email + GematriaNum + Source + Calc + LIT + LANGY + NEWSL

    with open("submiss.txt", "w") as submiss:
        submiss.write(BODYOF)

    return render_template("index.html")
    return redirect(url_for('index'))

网页代码:

代码语言:javascript
复制
    <!-- ...it's part of a nav bar. -->
    <!-- Trigger/Open The Modal -->
    <li><a id="myBtn">Submit your Calculations to the Database!</a></li>
</ul>

<!-- The Modal -->
<div id="myModal" class="modal">

<!-- Modal content -->
<div class="modal-content">
    <span class="close">&times;</span>
    <form action="." method="POST"><span>
        Name:<br>
        <textarea style="resize:none" name="name" cols="25" rows="1" maxlength="25"></textarea><br>
        E-mail:<br>
        <textarea style="resize:none" name="mail" cols="25" rows="1" maxlength="25"></textarea><br>
        Gematria Number:<br>
        <textarea style="resize:none" name="gematria" cols="25" rows="1" maxlength="25"></textarea><br>
        Source Text [i.e. Exodus 2:12]:<br>
        <textarea style="resize:none" name="source" cols="25" rows="1" maxlength="25"></textarea><br>
        Calculation in Hebrew, Greek or English:<br>
        <textarea style="resize:none" name="calc" cols="50" rows="1" maxlength="100"></textarea><br>
        Transliteration (if applicable):<br>
        <textarea style="resize:none" name="transliteration" cols="50" rows="1" maxlength="100"></textarea><br>
        Meaning and Usage:<br>
        <textarea style="resize:none" name="translation" cols="50" rows="1" maxlength="100"></textarea><br>
        <br>
        <input type="checkbox" checked="checked" name="newsletter" style="margin-bottom:15px"> Sign up for our newsletter?<br>
        <input type="submit" value="Send"></span>
        <input type="reset" value="Reset">
    </form>
    <br>
    Thanks!
</div>

</div>

<script>
// Get the modal
var modal = document.getElementById('myModal');

// Get the button that opens the modal
var btn = document.getElementById("myBtn");

// Get the <span> element that closes the modal
var span = document.getElementsByClassName("close")[0];

// When the user clicks the button, open the modal
btn.onclick = function() {
    modal.style.display = "block";
}

// When the user clicks on <span> (x), close the modal
span.onclick = function() {
    modal.style.display = "none";
}

// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
    if (event.target == modal) {
        modal.style.display = "none";
    }
}
</script>

您可以查看该网站的实时here

希望你能帮上忙。

EN

回答 1

Stack Overflow用户

发布于 2018-06-08 03:13:43

提交按钮输入字段中缺少name="action",并且没有处理新闻通讯复选框的空值的大小写,这是导致错误请求的原因。

因为action是未设置的,所以您永远无法访问

代码语言:javascript
复制
if request.form["action"] == "Send":

我在开发者模式(F12)下使用Chrome来查找post表单数据。当我注意到活动和时事通讯不在帖子数据中时,我编辑了HTML live,并能够成功地发表帖子。

祝你的继续学习B好运

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50725371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档