Web2py:从客户端(视图)获取值到控制器

时间:2017-04-13 12:21:00

标签: web2py

我以为我找到了问题的答案 Web2py: Pass a variable from view to controller

我试图在那里采用这个例子以获得DIV的大小,这最终取决于浏览器窗口的大小(相对定义)。为此,我在视图中有以下代码

<script>
    var div_size_Value = document.getElementById("model_graph_div").clientWidth;
    ajax('{{=URL('default', 'my_action', vars=dict(div_size_value=div_size_value))}}', [], ':eval');
</script>

但我总是得到

  

NameError:name&#39; div_size_value&#39;未定义

错误似乎没问题,因为Javascript var div_size_value是在HTML帮助程序URL中解决的。

因此我的问题是: 如何从客户端(视图)获取DIV大小值到控制器?

非常感谢您的支持!

祝你好运 克莱门斯

1 个答案:

答案 0 :(得分:1)

ajax('{{=URL('default', 'my_action', vars=dict(div_size_value=div_size_value))}}',
     [], ':eval');

您正在将Javascript与Python混合使用。在web2py模板中,{{...}}模板分隔符内的所有内容都是在将HTML发送到浏览器之前在服务器上执行的Python代码。因此,在您的代码中,div_size_value应该是服务器端Python环境中可用的Python变量。由于URL查询字符串涉及Javascript变量,因此您必须通过Javascript构建查询字符串,如下所示:

ajax('{{=URL('default', 'my_action')}}' + '?div_size_value=' + div_size_value, ...)