python - flask+ajax post 400错误

查看:192
本文介绍了python - flask+ajax post 400错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

表单代码

<form class="row"  role="form" action="/tpush/pl" method="post">
                <div class="input-field col s4">
                    <input id="cname" name="cname" type="text" class="validate">
                    <label for="cname">Username</label>
                </div>
                <div class="input-field col s4">
                  <input id="cemail" name="cemail" type="text" class="validate">
                  <label for="cemail">Email</label>
                </div>
                <div class="input-field col s4">
                  <input id="curl" name="curl" type="text" class="validate">
                  <label for="curl">URL</label>
                </div>
                <i class="material-icons prefix">mode_edit</i>
                <label for="comment-textarea">评论</label>
                <textarea id="comment-textarea" class="materialize-textarea OwO-textarea" name="comment"></textarea>
                <div class="OwO" style="z-index: 100"></div>
                <button class="btn btn-white" type="reset">取消</button>
                <button id="submit_button" class="btn btn-primary" type="submit">确认保存</button>
            </form>
            <div id="res"></div>

ajax代码:

<script type="text/javascript">
    $(function(){
       $('.btn').click(function(){
           var $cname = $('input[name="cname"]').val();
           var $cemail = $('input[name="cemail"]').val();
           var $curl = $('input[name="curl"]').val();
           var $text = $('textarea[name="comment"]').val();
           var $res = $('#res');
           $.ajax({
               url:'/tpush/pl',
               data: $('form').serialize(),
               type: 'POST',
               dataType:'json'
           }).done(function (data) {
               if (!data.r){
                   $res.html(data.rs);
               }else{
                   $res.html(data.error);
               }
           });
       });
    });
</script>

python代码

@web.route('/tpush/pl',methods=['POST'])
def web_tpush():
    cname = request.form['cname']
    cemail = request.form['email']
    curl = request.form['curl']
    #ctext = request.form['ctext']
    print(cname,cemail,curl)
    error = None
    if len(cname) < 2:
        error = '666'
    if len(cemail) < 5:
        error = '777'
    if error is not None:
        return jsonify({'r':1,'error':error})
    return jsonify({'r':0,'rs':ok})

我点击提交后跳转到/tpush/pl
提示:

4000 Bad Request

The browser (or proxy) sent a request that this server could not understand.
127.0.0.1 - - [13/May/2017 19:57:42] "POST /tpush/pl HTTP/1.1" 400 -
127.0.0.1 - - [13/May/2017 19:57:42] "POST /tpush/pl HTTP/1.1" 400 -

解决方案

cemail = request.form['email']

改为

cemail = request.form['cemail']

另外,你的form里有默认post 提交。如果想要自己处理的话,就不要在form里外加action 了。

$('.btn').click(function(event){
  event.preventDefault();
});

这篇关于python - flask+ajax post 400错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆