![](/img/trans.png)
[英]I am trying to write a simple asynchronous code in JS, but it doesn't seem to work
[英]I am trying to pass the size of a <DIV> back to google app engine (Python code) but can't seem to make it work
如果我在這里真的很蠢,很多人道歉 - 我早上大部分時間都在尋找答案,但也許我正在用錯誤的語言搜索。 我正在使用Google App Engine,使用Python代碼來設置我的webapp。 我已設法使用以下HTML代碼設置基本頁面結構:
main_html = """
<HTML>
<HEAD>
<LINK rel="stylesheet" type="text/css" href="static/css/main.css">
</HEAD>
<BODY>
<DIV class="wspace">
<BR>
</DIV>
<DIV class="header">
<FONT class="logoFont">Logo Text</font>
</DIV>
<DIV class="maincontainer">
<DIV class="sidebar" id="leftsidebar">
<SCRIPT>
var lsCanWid = document.getElementsByTagName("div"["leftsidebar"].offsetWidth
var lsCanHei = document.getElementsByTagName("div")["leftsidebar"].offsetHeight
</SCRIPT>
</DIV>
<DIV class="sidebar" id="rightsidebar">
<SCRIPT>
var rsCanWid = document.getElementsByTagName("div")["rightsidebar"].offsetWidth
var rsCanHei = document.getElementsByTagName("div")["rightsidebar"].offsetHeight
</SCRIPT>
</DIV>
<DIV class="mainscreen" id="mainscr">
<SCRIPT>
var mainCanWid = document.getElementsByTagName("div")["mainscr"].offsetWidth
var mainCanHei = document.getElementsByTagName("div")["mainscr"].offsetHeight
</SCRIPT>
%(MAINCONTENT)s
</DIV>
</DIV>
<DIV class="footer">
Footer Text
</DIV>
<DIV class="wspace">
<FONT class="crnotice">Copyright Notice Text</FONT>
</DIV>
</BODY>
</HTML>
"""
我已經測試了javascript變量,這些變量完全按計划工作(例如lsCanWid返回左側邊欄寬度)。
我在Python中得到了以下代碼:
class MainHandler(webapp2.RequestHandler):
def get(self):
lsCanWid = self.request.get('lsCanWid')
lsCanHei = self.request.get('lsCanHei')
rsCanWid = self.request.get('rsCanWid')
rsCanHei = self.request.get('rsCanHei')
mainCanWid = self.request.get('mainCanWid')
mainCanHei = self.request.get('mainCanHei')
temp_str = str(lsCanWid)
self.response.write(main_html %{"MAINCONTENT": temp_str})
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
我以前沒試過在“get”中使用self.request.get,所以我不確定這是不是問題。 如果你用其他字符串替換temp_str,python代碼工作正常,所以這不是我的問題所在。 我真的很感激這里的任何幫助!
簡而言之 - 您不是將這些值發送回處理程序,您需要將它們添加到查詢字符串或將其發回。
Javascript運行瀏覽器。 頁面在瀏覽器中呈現后,與后端代碼無關。 為了使您的Python代碼能夠從瀏覽器中了解任何內容,您必須將其發送回代碼。 這就是HTTP的工作原理。 它是一個“請求/響應”周期,一旦響應(發送給瀏覽器的內容)完成,就沒有連接。
因此,要將這些值發送回代碼,您需要將它們作為查詢字符串的一部分附加到請求中,例如/foo?lsCanWid=3&lsCanHei=4
(依此類推)。 您需要使用javascript構建此URL,然后將其添加到您必須單擊的鏈接 - 然后, 在下一個請求 (單擊此新鏈接)后,您的Python代碼將接收值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.