[英]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.