Javascript函数在web2py中自动执行

时间:2016-03-28 04:06:53

标签: javascript python html web2py

我在前端有一个复选框,想根据复选框的状态更新数据库,我也有保存按钮提交。

现在我感到困惑。每次我转向changeActive / id页面,而不点击按钮,它直接更新数据库。

警报工作正常。

这是控制器中的代码:

def changeActive():
    post=db.student(request.args(0,cast=int))
    def change(value):
        changeStatus=db(db.student.id==post.id).update(is_active=value)
        return changeStatus
    return locals()

这是changeActive.html

中的代码
{{extend 'layout.html'}}
<h1>it is a test</h1>
<h2>{{=post.name}}</h2>
<h2>{{=post.id}}</h2>
<h2>{{=post.is_active}}</h2>


<input type=checkbox id=is_active>
<input id="save"  type="button" value="save"/>
<script type="text/javascript">
window.onload=function()
    {
        var saveButton=document.getElementById('save');
        saveButton.onclick=function()
        {
            var changeSt=document.getElementById('is_active');
            if (changeSt.checked)
            {
                alert('active')
                {{change('T')}}
            }
            else
            {
                alert ('not active')
                {{change('F')}}
            }
        };
    };
</script>

1 个答案:

答案 0 :(得分:0)

在页面加载后,您似乎期望浏览器执行Python函数。这不是web2py模板的工作方式。模板包括Python代码,在将页面发送到浏览器之前在服务器上执行 。因此,在页面到达浏览器之前,会发生对change()函数的调用。

您可能想要做的是在浏览器中触发Ajax调用,这将调用服务器上的单独函数来处理更新。您可以通过jQuery(或其他合适的Javascript选项)处理,或使用web2py的内置Javascript ajax()函数,如here所述。