处理web2py导致javascript

时间:2017-02-22 23:35:40

标签: javascript python web2py

为web2Py完成新手....我有一个带有下拉菜单的网页,我想根据所选的值执行某些查询。

Reports.html

<h2>Reports</h2>

<p>Please select a report template or choose to write your own.</p>

<select id="ReportSelect" onchange="ReportSelectionChange()">
    <option disabled selected value="0"></option>
    <option value="1">option 1</option>
    <option value="2">option 2</option>
</select>

<script language="javascript" type="text/javascript">
function ReportSelectionChange()
{
    var menuItem = document.getElementById("ReportSelect").value;

    switch(menuItem)
    {
        case "1":
                {{=myform}}
                break;
        case "2":
        default:
                alert(menuItem);
                break;
    }
}

控制器python文件

def reports():
user_id = request.args(0)
tuple = db(/*My query here*/).select()

myform = FORM('/*not sure what goes here*/')

return dict(tuple=tuple, myform=myform)

我想将查询中的所有结果传回调用页面,并将结果显示在表格中。

问:我怎么能这样做?什么需要传回去?这甚至可以用javascript完成吗?

2 个答案:

答案 0 :(得分:1)

您正在以无法正常工作的方式混合使用web2py生成的HTML和javascript。请记住,javascript是在客户端执行而python是服务器端。

在这种情况下,我建议你从陷阱链接开始: http://www.web2py.com/books/default/chapter/29/12/components-and-plugins#Trapped-Ajax-links-and-the-A-Helper

哪种方法适合您使用浏览或创建。稍后您可以重新访问此页面并使其更好。

答案 1 :(得分:1)

使用ajax函数,ajax函数将在某些事件中执行(这种情况onclick的select项,然后将在你的控制器中运行一些方法,控制器中的这个方法将从db返回数据ajax函数有参数,表示将附加结果的目标。

1.在选项元素上使用ajax函数,指示将在onclick事件上执行。 2.在控制器的方法中,在数据库上进行搜索并返回结果。 3.将ajax函数的目标设置为html中的某个元素(table,li&#39; s ...)

1

<select id="ReportSelect" name="myoption">
    <option disabled selected value="0"></option>
    <option value="1" onclick="ajax('{{=URL('controller', 'method')}}', ['myoption'], 'your_target')" />option 1</option>
    <option value="2">option 2</option>
</select>

2

def method():
    data = request.vars.myoption
    your_result_query = db(your_query)

    elements = UL(LI(content) for i in your_result_query)
    return dict(result=elements)
  1. 在您的视图中,添加一个id为ajax_function目标同名的元素。