在我的 Flask 应用程序中(我对 Flask 还很陌生),我使用 Javascript 获取客户端的纬度和经度值,然后将格式化字符串传递到 Flask View 。该 View 应该将字符串传递给在线 API 并获取 JSON 对象。然后它将其转换为字典并在新页面上显示某些值。将 Javasctipt 函数中的变量传递给页面后,我在从 View 加载页面时遇到问题。我知道它返回一个结果(我尝试使用 Javascript 的 alert
显示结果 html
),但 returnendered_template()
未加载由于某种原因新页面。我想知道这是否有可能实现。谢谢。
Javascript:
function getLocation(){
if("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(transferFile);
}
}
function transferFile(position){
var start = 'lat=';
var result = start.concat(position.coords.latitude, '&lon=', position.coords.longitude, '&format=json');
$.get(
url="phony",
data= result,
success=function(data) {
;
}
);
}
这是 Flask 部分:
@app.route('/phony')
def phony():
query = request.query_string
url = <link to API> + query
location_dict = requests.get(url).json()
return render_template("phony.html", location_data = location_dict)
最佳答案
您当前对 $.get
的调用不会对成功回调中的结果执行任何操作
success: function(data) {
;
}
data
包含 render_template('phone.html', location_data=location_dict)
的输出。您需要将其添加到页面中。
success: function(data) {
$('#some-selector').html(data);
}
这将用输出替换与 #some-selector
匹配的元素的内容。如果输出包含新的 HTML 文档(即,它包含在 html 标记中),您将需要替换整个 DOM。你可以用类似的东西来做到这一点
success: function(data) {
$('html').replaceWith(data);
}
关于javascript - 将变量从 Javascript 传递到 Flask,然后加载模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022979/