【发布时间】:2015-12-16 03:27:42
【问题描述】:
如何修改以下代码,以便发送包含适当数据的 JSON 文件?
我问的原因是因为 POST 请求似乎没有被缓存,这对我来说是个问题。我想使用 GET 来缓存 JSON 文件。基本上,这个查询所做的是它获取视口的当前边界并基于此从数据库 (MongoDB) 中获取数据。
我尝试在关闭追加之前添加+ ".json",但它不起作用。
myJSON.append({"type":"Feature","geometry":obj["geometry"],"properties":{"Address":obj["properties"]["Address"],"ID":obj["properties"]["ID"]}})
这是完整的代码:
@app.route('/getData', methods=['POST','GET'])
def getData():
myCollection = db["myCollection"]
bBox = [json.loads(request.data)]
myJSON = []
for obj in myCollection.find({"geometry":{"$geoWithin": {"$geometry": {"type" : "Polygon" ,"coordinates": bBox}}}},{"properties.Address":1,"properties.ID":1,"geometry":1}):
myJSON.append({"type":"Feature","geometry":obj["geometry"],"properties":{"Address":obj["properties"]["Address"],"ID":obj["properties"]["ID"]}})
return jsonify(data = {"type":"FeatureCollection", "features":myJSON})
在客户端,AJAX 请求如下所示:
bounds = getBoundingBox();
$.ajax({
url: '/getData',
type: 'POST',
data: JSON.stringify(bounds),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
// add data here
}
});
【问题讨论】:
-
获取请求通常不包含正文,数据通常存在于 URL 中。您确定您的服务器正在为上述 get 请求查找正文中的数据吗?