处理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)
- 在视图放元件用具有
ajax_function
靶的相同的名称标识。