首页 > 解决方案 > 修复接收ajax数据时的“Bad request”

问题描述

简而言之,我使用 Ajax 从 SelectField (WTFORMS) 发送数据以动态更新其他 SelectField 选项。

我尝试将数据作为默认值或 json 发送,在这两种情况下均未成功。

这是我尝试的最终代码:

在 jinja2 模板中:

[...]
<th width="20%">{{ studsubreg.sub }}</th>
[...]
<script type="text/javascript" src="/static/js/jquery.min.js"></script>
    <script type="text/javascript">
$(document).ready(function(){

    $("select#studsubreg-sub").change(function() {



            var subid = $(this).find('option:selected').text();
            {#var subid=$(this).val();#}

            $.ajax({
                type: 'GET',
                data: { 'sid': subid},
                url: "{{ url_for('getcourse') }}",
                contentType: 'application/json;charset=UTF-8',
                success: function(response) {
                }
            });


    });
});


</script>

在 Flask 中:(只是为了测试输出是否正常工作)

@app.route('/getcourse', methods=['GET'])
@login_required
def getcourse():
    subid = request.json['sid']
    print(subid)

我总是收到错误 400 Bad request 我只想获取 subid 值,以便我可以返回结果以填充其他 SelectField。

非常感谢

标签: pythonflask

解决方案


试试request.args.get('sid')

您只是使用 Ajax 获得了一个论点。

同时删除contentType: 'application/json;charset=UTF-8'.


推荐阅读