繁体   English   中英

使用烧瓶和ajax

[英]Using flask and ajax

我正在使用Flask开发的网络应用。 我刚刚添加了一项功能,可以使用Ajax向Google进行地理编码请求。 因此,按下按钮会在loc_gm.js中调用此函数:

$(function() {
$('#geo_google').click(function() {

    $.ajax({
        url: 'geo_gm',
        data: $('form').serialize(),
        type: 'POST',
        success: function(response) {
            response = JSON.parse(response)
            $('#Lat').val(response['lat']);
            $('#Long').val(response['lng']);
        },
        error: function(error) {
            console.log(error);
        }
    });
});

});

这是view.py中的代码:

@app.route('/geo_gm', methods=('GET', 'POST'))
def geo_gm():
    calle1 = request.form['calle1']
    calle2 = request.form['calle2']
    altura = request.form['altura']

if calle1 and calle2:
    address = '{}+y+{},+CABA,+AR'.format(calle1, calle2)
elif calle1 and altura:
    address = '{}+{},+CABA,+AR'.format(calle1, altura)

url = 'https://maps.googleapis.com/maps/api/geocode/json?address={}&key={}'.format(address, GOOGLE_KEY)
response = requests.get(url)
result = response.json()
return json.dumps(result['results'][0]['geometry']['location'])

这可以在我的本地计算机上运行(我从Google获得了我想要的坐标),但是当我将其上传到服务器(Digital Ocean)时,我在javascript控制台中收到了此错误:

POST http://192.xx.xx.xxx/geo_gm 404(未找到)

作为该IP地址的宿主我的应用程序。

我知道这肯定是我犯的一个愚蠢的错误,但我无法弄清楚。

谢谢!

好吧,我终于找到了解决方法。

我在html文件中添加了以下内容:

<input type="hidden" id="geo-gm" name="variable" value="{{ url_for('geo_gm') }}">

这样我就可以拥有geo_gm函数的相对路径。 然后在js文件中:

$.ajax({
        url: $('#geo-gm').val(),

我这样做是因为直接在js文件中使用{{url_for('geo_gm')}}无效。

也许这不是最好的方法,所以如果有人有更好的方法,我会很高兴听到。

谢谢大家。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM