首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在没有刷新的情况下单击“写入数据库”

在没有刷新的情况下单击“写入数据库”
EN

Stack Overflow用户
提问于 2015-05-06 10:20:54
回答 2查看 2.3K关注 0票数 1

我已经用了很长一段时间了。

一切都很顺利,因为我在回避一个问题。在写入数据库时,我总是使用post (这会使页面重新加载)。

在邮寄表格等方面不是什么大问题。

现在,我需要一个“我想要帮助”按钮,它使db中的值为true或false。

基于这个值,我将生成提供帮助的html。

但是按钮无法刷新页面。这就是我被困的地方。

我只设法让它在不写入数据库的情况下工作(并将其存储在本地)。

有明显的事情我错过了吗?或者是一些能让它完成的瓶子魔法。

我正在考虑的解决方案是在离开页面后张贴到db。但这件事没起作用。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-06 15:17:25

本例使用Ajax烧瓶后端发送带有jQuery的数据并接收响应。这很简单,但是在用户单击“帮助”按钮后,我标记了您要处理后端处理的位置。

代码语言:javascript
代码运行次数:0
运行
复制
from flask import Flask, render_template_string, request


app = Flask(__name__)


@app.route('/')
def index():
    return render_template_string('''
        <html>
            <head>
                <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
                <script type="text/javascript">
                    $(document).ready(function() {
                        $('#send_data').on('click', function() {
                            $.ajax({
                                url: "{{ url_for('data_post') }}",
                                method: "POST",
                                data: {
                                    data: $('#data').val()
                                },
                                success: function(data) {
                                    $('#response').html(data);
                                }
                            });
                        });
                    });
                </script>
            </head>
            <body>
                <input type="text" name="" id="data">
                <button id="send_data">Send</button>
                <br />
                <p id="response"></p>
            </body>
        </html>
        ''')


@app.route('/data', methods=['POST'])
def data_post():
    # handle your database access, etc.
    return 'received'


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

这是一个带有文本框和按钮的简单索引页。在文本框中输入一些内容,然后单击按钮。您应该在临时表单下面的页面上看到“接收”,这是处理(在本例中没有任何处理)从后端返回的结果。

票数 3
EN

Stack Overflow用户

发布于 2015-05-06 15:20:55

我目前也在开发一个Flask应用程序,如果你不想重新加载网页,你必须打个AJAX电话。这可以很容易地通过jQuery.post()函数来完成。此外,您可能需要在Flask中设置一个新的路由,以便提供post函数将向其发出请求的所需数据。若要禁用自动表单提交,可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
$('form').submit(false);

对于手动投递和从服务器接收数据,您可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
<button ... onclick="submitForm()">Submit</button>

和submitForm():

代码语言:javascript
代码运行次数:0
运行
复制
function submitForm()
{
    $.post( url, { "data": "form-data" }).done(function (){...});
}

希望这能有所帮助。

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

https://stackoverflow.com/questions/30073942

复制
相关文章

相似问题

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