如何将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> 
     """ 
+0

你形成html代码的方式很糟糕,但如果是这样的话 - 打破html代码字符串将lat-lng值附加到字符串并形成html代码。 –

+1

不要在您的Python文件中编写HTML。 GAE支持Jinja2,你应该使用它。 –

+1

如果你仍然坚持用这种方式来形成你的字符串,那么除了'{lat}'和{'lng'}之外,确保你用'}}'替换了所有带有{{'和'}'的''',然后只需在'formstring'上调用'.format(lat = lat,lng = lng)'。 – zwer

看看string formatters。随着您的网络应用程序的增长,您可能会希望切换到使用模板,因为它们更健壮。 Webapp2 provides supportJinja2 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