python - 单击传单 Web 应用程序后如何将纬度和经度返回到 Flask 服务器?

标签 python ajax flask leaflet

我对传单非常陌生,我正在尝试研究如何从传单中的 onMapClick 事件返回纬度和经度到 Flask 服务器应用程序,以允许我使用坐标在我的上执行空间搜索数据库。该事件目前仅在网络应用程序的弹出窗口中显示经纬度。

我已经进行了搜索,但我想我的知识太基础了,我不知道我在搜索什么功能。

我的网络 map

<!DOCTYPE html>
<html>
<head>
    <title>Demo</title>
    <link rel="stylesheet" href="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a464f4b4c464f5e6a1b041a0419" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet.css" /> <!-- Leaflet CSS file (style sheets)>-->
    <script src="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bdd1d8dcdbd1d8c9fd8c938d938e" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet.js"></script> <!--leaflet java script file>-->

</head>
<body>
    <div id="map1" style="width: 800px; height: 600px;"></div>    
<script>
    var mymap = L.map('map1').setView([51.5, -0.09], 10);

    <!--add map to display>-->
    L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
        attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
        maxZoom: 18,
        id: 'mapbox.streets',
        accessToken: '*****************'
    }).addTo(mymap);

    <!--add popups as a layer>-->  
    var popup = L.popup();
    <!--logs the action and gives lat long of where click occured >-->  
    function onMapClick(e) {
        .setLatLng(e.latlng)
        .setContent("You clicked the map at " + e.latlng.toString())
        .openOn(mymap);
    }

    mymap.on('click', onMapClick);
</script>
</body>
</html> 

和服务器应用

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/demo')
def webMap():
    return render_template('demo.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8090)

编辑

我尝试使用 ajax 调用,但收到 405 错误

$.ajax('demo/data/', {
      type: 'GET',
      data: {
        lat: e.latlng.lat,
        lng: e.latlng.lng
      }
    });
};

flask 应用程序

@app.route('/demo/data/')
def demoData():
    return request.form['lng'], request.form['lat']

最佳答案

405 错误是一个方法不允许错误。 使用 REST-api 时,您应该使用 POST 请求发送信息,如 here 中所述。 .

您需要将 app.route 更改为,

 @app.route('/demo/data/' methods=["POST"])

允许 post 方法

关于python - 单击传单 Web 应用程序后如何将纬度和经度返回到 Flask 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47133398/

相关文章:

python - 如何使用 Flask 测试客户端模拟 AJAX 请求?

python - 平均忽略 NumPy 数组中列的 NaN,而不使用 numpy.nanmean

Python 迭代/查找字典意外行为

PHP、MySQL 和 AJAX : Unable to use sessions across the scripts in the same domain

python - 将 gevent.evnet 与 celery.task 结合使用

flask - 如何使用 Jinja 呈现链接的完整 URL(用于电子邮件)

python - 通过 ssh 连接时从模块 numpy 导入时来自 python 的错误消息

python/pandas 将列折叠为日期时间季度

javascript - 如何用 jQuery ajax 替换 javascript ajax?

javascript - 保护 javascript [AJAX] 代码?