Ajax GET请求不与Flask一起使用

我在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 - 

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

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请求没有请求正文。