为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完成吗?答案 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)
ajax_function
目标同名的元素。