如何将确认“ok”/“cancel”从JS发送到Flask

How to send confirm "ok" / ""cancel" from JS to Flask

提问人:tavalendo 提问时间:5/26/2021 最后编辑:tavalendo 更新时间:5/26/2021 访问量:1007

问:

我正在尝试找到一种“收集”用户输入的方法,比如说,如果用户在 JS 确认窗口中按“OK”,我想在 python 的烧瓶中收到“True”,如果用户按“取消”,则收到“False”。

我有JS函数的这个部分:

<script>
    function confirmBooking(elem) {
        if(confirm('Are you sure you want to book this slot?') == true) {
            //elem = 1;
            alert("its done: " + elem);            
        }
        else { 
            return 0;
        }          
    }
</script>

现在在“形式”方面,我有这个:

<form method="post"> 
     <button type="submit" name="free_button" value="free_button" onClick="confirmBooking('{{ booking_slot }}')"> Free </button> 
</form>

所以,在这里,booking_slot是一个包含一些字符串的 python 变量。如果用户分别选择“OK”或“cancel”,我希望通过一些方法将 True/False 值设置为 Flask 端的变量。

有什么方法可以做到这一点吗?谢谢。

javascript python 服务器端 flask-wtforms

评论


答:

3赞 Mersan Canonigo 5/26/2021 #1

您需要创建一个函数来收集或获取从前端到后端的输入。我通常做这种技术。

<form action="{{url_for('/collect')}}" method="post"> 
     <input type="hidden" id="userInput" name="userInput"> 
     <button type="submit" name="free_button" value="free_button" onClick="confirmBooking('{{ booking_slot }}')"> Free </button> 
</form>

<script>
    function confirmBooking(elem) {
        if(confirm('Are you sure you want to book this slot?') == true) {
            //elem = 1;
            alert("its done: " + elem); 
            document.getElementById("userInput").value = "True";
        }
        else { 
             document.getElementById("userInput").value = "False";
             return 0;
        }          
    }
</script>

@app.route('/collect',methods=["POST"])
def collect():
    if request.method =="POST":
        userInput = request.form.get("userInput")
    return render_template('<template here>',userInput=userInput)

评论

1赞 tavalendo 5/28/2021
谢谢。这正是我想要的。效果很好。