Flask app将数据发布到错误的资源?

时间:2015-05-08 15:14:42

标签: javascript jquery python flask

我有一个搜索按钮,点击后,应该将数据发送到我的服务器。 javascript看起来像这样:

$('#search-btn').click(function() {
      $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/my_route",
        data: JSON.stringify({title: 'hallo', article: 'test'}),
        dataType: 'json',
        success: function (data) {
        console.log(data.title);
        console.log(data.article);
        },
      });
    }); 

在服务器上,我的路由如下所示:

@app.route('/my_route')
def route(methods=['GET', 'POST']):
    print(request.method)
    return flask.jsonify({"foo": "bar"})

通过此设置,我从jQuery收到控制台错误:POST http://localhost:5000/ 405 (METHOD NOT ALLOWED)

我不明白为什么这段代码会将405个广告发布数据丢给错误的资源? ajax和路由都指向/my_route。谁能发现我的问题?感谢。

1 个答案:

答案 0 :(得分:3)

非常确定你需要将methods=['GET', 'POST']放在app.route装饰器中,如下所示:

@app.route('/my_route', methods=['GET', 'POST'])
def route():
    print(request.method)
    return flask.jsonify({"foo": "bar"})

http://flask.pocoo.org/docs/0.10/quickstart/#http-methods