2017-02-22 58 views
0

完成新手到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來完成?

回答

1

使用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靶的相同的名稱標識。