我正在使用Flask,并且有一个对视图的Ajax调用,该视图在坐标范围内查找一些数据,我只希望能够返回这些数据。它成功地到达视图,查询数据库并返回数据,但在JavaScript代码处没有收到响应。
Ajax调用如下所示:
$.ajax({
type: "POST",
dataType: "application/json",
url: "/getsignswithin",
data: dataToSubmit,
success: function(data) {
console.log(data);
}
});
Flask路由如下所示:
@app.route("/getsignswithin", methods=['POST'])
def signs_within():
data = request.get_json(force=True)
signs = db.signs.find({
'location': {
'$geoWithin': {
'$box': [
[ data['extent'][0],data['extent'][1] ],
[ data['extent'][2],data['extent'][3] ]
]
}
}
})
print(dumps(list(signs)))
#return jsonify(success=True)
return dumps(list(signs)), 200, {'ContentType':'application/json'}
print(dump(list(Sign)显示了数据,但是在Ajax的成功部分没有收到任何内容。不会向浏览器控制台或Python控制台报告任何错误。
我尝试过return jsonify(success=True),只是想看看它是否返回任何东西,但也不起作用。
控制台输出:
127.0.0.1 - - [07/Jul/2020 17:06:12] "POST /getsignswithin HTTP/1.1" 200 -
[<listdatahere>]
127.0.0.1 - - [07/Jul/2020 17:06:13] "POST /getsignswithin HTTP/1.1" 200 -
发布于 2020-07-07 16:12:55
你需要像这样返回:
json.dumps({'data': list(signs)}), 200, {'ContentType':'application/json'}
发布于 2020-07-07 16:50:10
将数据类型更改为"json",而不是"application/json“,将使其能够返回数据。感谢newbie99关于错误回调的建议,它使我能够识别问题。在以后的故障排除中,我会记得这样做的。
$.ajax({
type: "POST",
dataType: "json",
url: "/getsignswithin",
data: dataToSubmit,
success: function(data) {
console.log(data);
}
});
https://stackoverflow.com/questions/62778998
复制