【问题标题】:Error 405: Method Not allowed flask, ajax错误 405:方法不允许烧瓶、ajax
【发布时间】:2016-11-07 12:41:10
【问题描述】:

只是尝试使用 Ajax 和 Python-Flask 将表单数据提交到 MySQL DB,但同样的错误“方法不允许”一次又一次出现..请查看代码并帮助我...

<div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title" Align="center">Create Account</h4>
        </div>
        <form role="form" method="POST">
        <div class="modal-body">
          <p id="msg"></p>
          <input class="form-control" name="email" type="text" Placeholder="Email"></input><br />
          <input class="form-control" name="firstname" type="text" Placeholder="First Name"></input><br />
          <input class="form-control" name="lastname" type="text" Placeholder="Last Name"></input><br />
          <input class="form-control" name="password" type="password" Placeholder="Password"></input><br />
          <input class="form-control" type="password" Placeholder="Confirm Password"></input>
        </div>
        <div class="modal-footer">
          <button id="btncheck" class="btn btn-danger" type="submit" >Signup</button>
        </div>
      </form>
      </div>

    </div>
  </div>
</div>

<script>    

$(function(){

  $("#btncheck").submit(function(){
    $.ajax({
    url: '/signup',
    type: 'POST'
    success: function(res){
          console.log(res);

        }

  });
  });

Python 代码

@app.route("/signup", methods=['POST','GET'])
def signup():
    try:
        if request.method == 'POST':
            _email =request.form["email"]
            _firstname = request.form["firstname"]
            _lastname = request.form["lastname"]
            _password = request.form["password"]
            con = mysql.connect()
            cursor = con.cursor()
            if _email and _firstname and _password:
                cursor.execute("""INSERT INTO signpp (
                                            user_email,
                                            user_fname,
                                            user_lname,
                                            user_password)
                                    VALUES (%s,%s,%s,%s)""",(_email,_firstname,_lastname,_password))

                data = cursor.fetchall()
                if len(data) is 0:
                    con.commit()
                    return jsonify(data = "User created successfully !")
                else:
                    return jsonify(str(data[0]))


    except Exception as e:
        return render_template('error.html', error = str(e))        

    cursor.close()
    con.close()

错误:方法不允许

请求的 URL 不允许该方法。

【问题讨论】:

  • 如果我的回答有帮助,请考虑投赞成票或将我的回答标记为答案。

标签: javascript python ajax python-2.7 flask


【解决方案1】:

响应您的 ajax 调用的 Web 服务是否需要任何数据,我认为自从您进行 POST 后是这样?如果是这样,我看不到您将其传递到何处,并且可能会引发此错误(签名不匹配)。数据:yourDataHere

举个例子:

var params = { StateId: stateid };

$.ajax({
    dataType: 'json',
    type: 'post',
    url: 'YOURURLHERE',
    data: params,
    error: function (request, status, error) { 
         alert('Error: ' + error); 
    },
    success: function (result) {
        $('#body').html(result);

                        }
});

【讨论】:

  • 您的 ajax 调用中是否定义了错误分段?当您调试时,您是否点击了成功部分?
  • 加载资源失败:服务器响应状态为 405 (METHOD NOT ALLOWED) 控制台出错...
【解决方案2】:

我确定这是否是拼写错误,但您在type: 'POST' 之后忘记了逗号。

在旁注中,您正在以明文形式发送敏感数据,例如用户密码。我建议先加密它。最常见的技术之一是bcrypt

【讨论】:

  • 您的变量在哪里存储您尝试发布的数据?我在您的 ajax 调用代码中看不到这一点@LokeshTiwari
  • @MisterPositive 在更新数据变量后运行良好,非常感谢
  • 很高兴您解决了这个问题。如果可以,您可以上传我的答案或将其标记为答案吗? @LokeshTiwari
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 2018-01-25
相关资源
最近更新 更多