发布投掷500错误

时间:2015-10-12 09:09:41

标签: javascript python ajax flask

我正在写一个小应用程序。这是代码段。

使用Javascript:

<script type="text/javascript">
function filldata()
{
    var sample = document.getElementById("filter-select").value;
    jQuery.support.cors = true;
    $.post("/test",{"filter_type":sample},function(data,status)
    {
    alert(data);
    });
}
</script>

Flask Code:

@app.route('/test', methods=['POST'])
def test(str):
    return str

它给了我500 internal error 当我在调试模式下运行它时,它说:

test() takes exactly one argument(zero given)

3 个答案:

答案 0 :(得分:3)

您的代码:

@app.route('/test',methods=['POST'])
def test(str):
    return str

期望输入中名为str的变量。 使用flask,在定义路由时,函数的参数代表 url 变量:

# the url have a parameter
@app.route('/user/<id>',methods=['GET'])
    def test(id): # we get it here
        return user.fromId(id)

要检索查询字符串,您可以使用request.args。如果您要发送json,请获取正文request.datarequest.json

from flask import request

@app.route('/test',methods=['POST'])
def test():
    return request.data

答案 1 :(得分:0)

您需要解析Flask&lt; request对象

中的参数
from flask import request

@app.route('/test',methods=['POST'])
def test():
    return request.form.get('filter_type')

有关详细信息,请参阅quickstart

答案 2 :(得分:0)

在Flask代码段中,您添加了一个参数,但只有在您将URL更改为/test/<str:str>时才会发送参数。由于它是POST请求,您可以使用request.json

访问数据