将POST请求更改为GET以发送用于缓存的JSON文件

时间:2015-09-18 21:19:15

标签: json ajax mongodb pymongo

如何修改以下代码,以便发送带有相应数据的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
    }
});

1 个答案:

答案 0 :(得分:0)

您需要将JSON数据作为GET参数发送,并且需要名称

$.ajax({
    url: '/getData',
    type: 'GET',
    data: {bounds: JSON.stringify(bounds)},
    success: function (data) {
        // add data here
    }
});

然后在您的服务器端,您检索bounds GET参数并将其用于json.loads函数。