处理web2py结果为javascript

问题描述:

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

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来完成?

您正在以无效的方式将web2py生成的HTML与JavaScript混合在一起。请记住,JavaScript是执行客户端和python是服务器端。

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

这会为你要么浏览或创建的使用工作。稍后,您可以重新访问此页面并使其更好。

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

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

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. 在视图放元件用具有ajax_function靶的相同的名称标识。
开始=>