如何将Json数据从javaScript发送到Flas

2024-09-28 18:58:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个动态表单生成器。在构建过程之后,我试图通过脚本将所有表单数据放入JsonObject中,并将其传递到flask视图,以便向用户显示它们。但我无法正确设置。 下面的按钮调用javascript

<form action="/preview" method="post" role="form">
<button class="btn btn-primary" name = "submit" id = "submit">submit</button>
</form>

这是我调用ajax的脚本。

<script>
     $(document).ready( function() {
        $('#submit').click(function() {
           var formdata = serialize();
           $.ajax({
                 type: 'POST',
                contentType: 'application/json',
                data: JSON.stringify(formdata),
                dataType: 'json',
                url: 'http://192.168.58.206:5000/index',
                success: function (e) {
                    console.log(e);
                },
                error: function(error) {
                console.log(error);
                }
                });
            });
        });
</script>

下面是我如何在flask python中渲染的。

@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        asd = request.json
        session['formdata'] = asd
        if 'formdata' in session:
            return json.dumps({'success': True}), 200, {'ContentType': 'application/json'}
    return render_template("index.html")

@app.route('/preview', methods=['GET', 'POST'])
def preview():
    if 'formdata' in session:

        renderedform = formbuilder(json.dumps(session['formdata']))
        renderedform = renderedform.renderform()
        session.pop('formdata')
        return render_template("asd.html",renderform = renderedform)
    return "Error"

我的renderdom()方法将json对象作为参数,并为表单创建相应的html块。

但当我以这种方式运行它时,有时按钮操作会在脚本运行并创建json对象之前将我引导到/preview路由。所以这会导致会话的formdata为None。

有什么想法我可以通过json对象在预览中呈现吗?


Tags: form脚本jsonapp表单indexreturnsession