Ajax GET请求不适用于Flask

发布于 2021-01-29 14:59:27

我从html中接收来自用户的一堆输入,然后将其传递给ajax查询以获取响应。

$.ajax({
  url:"http://0.0.0.0:8080/getReport",
  type:"GET",
  data:JSON.stringify(out),
  dataType:"json",
  contentType:"application/json"
})

这是满足上述要求的Flask代码。

@app.route('/getReport', methods=['GET'])
def report():
    return Response('this is a sample response')

上面的方法无法通过get找到到“报告”的路线。但是,它可以在POST请求中找到它。

这是我得到的日志

  127.0.0.1 - - [25/Apr/2016 13:00:03] "GET /getReport?{%22insertion_id%22:%22%22,%22start%22:%22%22,%22end%22:%22%22} HTTP/1.1" 400 -

错误的请求..我在这里做错了什么?

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    GET请求没有contentType (*),并且不是JSON编码的,而是URL编码的(普通,常规键值对)。

    这意味着您可以简单地使用jQuery的默认值。

    $.get("http://0.0.0.0:8080/getReport", out).done(function (data) {
        // request finished
    });
    

    这将导致如下请求:

    GET /getReport?insertion_id=&start=&end= HTTP/1.1
    

    服务器将很容易理解这一点。


    (*)这是因为Content-Type标头确定了请求正文的类型。GET请求没有请求正文。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看