如何将HTML变量的值发送到HTML中的JavaScript
问题描述:
我正在使用Google App Engine在网页上显示Google地图。如何将HTML变量的值发送到HTML中的JavaScript
我想将数据库中的纬度和经度带到地图上。为此,我需要将导入的纬度和经度传递给HTML中的JavaScript。我尝试了几种方法,但它没用。 (例如,{{variable}}
是无用的。)
如何最好地调试或以其他方式继续呢?
class Map(webapp2.RequestHandler):
db = connect_to_cloudsql()
cursor = db.cursor()
cursor.execute("""select latitude,longitude from User;""")
data=cursor.fetchone()
lat=data[0]
lng=data[1]
formstring = """
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="utf-8"/>
<meta name="google-site-verification" content="9EqLgIzCmwFo7XAcSe4sBNZ_t0gULadyeF9BCO0DY3k"/>
</head>
<body class>
<style>
#map {
width: 80%;
height: 400px;
background-color: grey;
}
</style>
<div style="position:relative;width:1080px;margin:0 auto;z-index:11">
<div class="container" role="main">
<div id="map"></div>
<br><br>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=mykey&callback=initMap">
</script>
<script>
function initMap() {
var uluru = {lat: {lat} , lng: {lng} };
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
</script>
</div>
</div>
</body>
</html>
"""
答
看看string formatters。随着您的网络应用程序的增长,您可能会希望切换到使用模板,因为它们更健壮。 Webapp2 provides support为Jinja2 templates,这是广泛使用,并会使你的生活从长远来看更容易。
但在短期内,使用字符串格式化:
formstring = """
<!DOCTYPE html>
...
var uluru = {lat: %f , lng: %f };
var map = new google.maps.Map(document.getElementById('map'), {
...
""" % (lat, lng) # assuming lat/lng are floats, use %s instead of %f for strings
或者,用 “新路”:
formstring = """<html.......{lat: {:f}, lng: {:f}...""".format(lat, lng)
再次,看string formatters。
你形成html代码的方式很糟糕,但如果是这样的话 - 打破html代码字符串将lat-lng值附加到字符串并形成html代码。 –
不要在您的Python文件中编写HTML。 GAE支持Jinja2,你应该使用它。 –
如果你仍然坚持用这种方式来形成你的字符串,那么除了'{lat}'和{'lng'}之外,确保你用'}}'替换了所有带有{{'和'}'的''',然后只需在'formstring'上调用'.format(lat = lat,lng = lng)'。 – zwer