我正在尝试将<DIV>的大小传递回Google App Engine(Python代码),但似乎无法使其正常工作 - javascript

如果我真的很抱歉,我会道歉-我一直在早上大部分时间都在寻找答案,但是也许我搜索的字词有误。我正在使用带有Python代码的Google App Engine来设置我的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)

我以前没有尝试在“获取”中使用self.request.get,所以我不确定这是否是问题。如果将temp_str替换为其他字符串,则python代码可以正常工作,所以这不是我的问题所在。我真的很感激这里的任何帮助!

参考方案

简而言之-您没有将这些值发送回处理程序,而是需要将它们添加到查询字符串中或将其发布回。

Javascript运行浏览器。在浏览器中呈现页面后,您的后端代码就没有连接了。为了使您的Python代码从浏览器中了解所有内容,您必须将其发送回代码。这就是HTTP的工作方式。它是一个“请求/响应”周期,并且响应(您发送到浏览器的内容)完成后就没有连接。

因此,要将这些值发送回您的代码,您需要将它们作为查询字符串的一部分附加到请求中,例如/foo?lsCanWid=3&lsCanHei=4(依此类推)。您将需要使用javascript构建此URL,然后将其添加到必须单击的链接中-然后,在下一个请求(一旦单击此新链接)后,您的Python代码将接收值。

手风琴按年份排序的帖子 - javascript

我有一个自定义类型的推荐信,并且帖子很少。我正在尝试创建一个按年份显示帖子的手风琴。因此,当您单击年份时,它将显示该年份的所有帖子(请参见下面的屏幕截图)。我已经有点用了,问题是当我单击年份时,它仅显示该年的一篇帖子。这是代码-> https://pastebin.com/3F98dcEU <?php get_header();?> <…

在<select>元素上忽略了DDSlick的“ selected”属性 - javascript

我正在使用以下jQuery插件:http://designwithpc.com/Plugins/ddSlick要在下拉列表中显示可选图像,请选择框。它与我尝试使用已选择的选项加载html时非常有用,但在DDSlick中未选择此选项(因此它仅显示第一个选择的选项)。如何转换:<select class="homepage_icon" …

在PHP文件中调用javascript函数并在加载HTML文件之后? - javascript

我需要在我的php中调用js函数,但无法正常工作。有人可以告诉我我在做什么错吗?我该如何轻松地做到这一点?谢谢!我有三个文件:  mail.php负责发送$ _POST的内容(工作正常)。我调用我的javascript函数来切换模式,具体取决于邮件是否已发送。 <? ... $response = $sendgrid->send($email);…

单击<span>标记以运行JQuery javascript函数[重复] - javascript

This question already has answers here: Event binding on dynamically created elements? (23个答案) 2年前关闭。 我使用PHP这样创建跨度。if ($subnetkey == 1 ) { echo ("<span class='subnetke…

用多个通配符替换正则表达式可在PHP中工作,而不能在JavaScript中工作 - javascript

我正在尝试为两个Markdown解析器实现中心对齐:在Parsedown的PHP中(成功)在Bootstrap Markdown的JavaScript中(未成功)我遵循并找到最简单的方法是使用最终的HTML输出,只需将内联样式捕捉到标签上即可。以下正则表达式可以满足我的需要,它会根据需要将style="text-align:center;"…