我想在視圖/ div中包含搜索功能作爲組件,以便在不同視圖中重用它。爲此,我使用一個類似於reference manual中描述的wiki頁面搜索的ajax回調生成結果列表進行搜索。web2py:Ajax回調搜索功能作爲一個組件(LOAD)
# for standalone search
# @auth.requires_login()
# for seach as a component
@auth.requires_signature()
def search():
model_id = request.args(0,cast=int)
form = FORM(T('Node Criteria: '), INPUT(_id='keyword',_name='keyword',
_onkeyup="ajax('callback', ['keyword'], 'nodes_in_model_result_div');"))
# for standalone search
# target_div =DIV(_id='nodes_in_model_result_div')
return dict(form=form) #, target_div=target_div)
def callback():
if (request.vars.keyword==''):
query = db.node.title
else:
query = db.node.title.contains(request.vars.keyword)
nodes = db(query).select(db.node.id, db.node.title, orderby=db.node.title)
table = [TR(node.id, node.title) for node in nodes]
return TABLE(THEAD(TR(TH('Node ID', _width="30%"), TH('Node'), _height="5")),
TBODY(*table),
_class='table table-bordered table-striped', _cellspacing="0", _width="100%", _id='nodes_in_model_table')
當搜索單獨使用(serach.html)時,一切正常。但作爲通過LOAD嵌入的成分(search.load)()如下所述搜索不起作用:然後
{{=LOAD('default','search.load', args=[model_id], target='nodes_in_model_div', ajax=True, user_signature=True)}}
相關的DIV是在調用視圖中定義。所述search.load僅由{{=形式}},其中search.html如下:
{{extend 'layout.html'}}
<h1>Search Node</h1>
{{=form}}
<br>
{{=target_div}}
是否有人知道如何嵌入到的web2py部件使用Ajax回調本身是一個功能?
問候 克萊門斯
請解釋一下你的意思是「沒有按沒有工作「。另外,我們可能需要查看(至少)控制器代碼。 – Anthony
Hello Anthony,'不起作用'意味着,當onkeyup事件應該觸發它時,顯示搜索條件的輸入字段,但不顯示結果列表(作爲表)。由於控制器代碼太長,無法將其放入評論中,因此我正在編輯問題帖子。 – Clemens
更新: 效果似乎更一般。它也出現在參考手冊的wiki搜索示例中(http://web2py.com/books/default/chapter/29/03/overview#A-simple-wiki)。當您用任何參數(.../search/1)擴充搜索頁面時,搜索不再起作用。 (def search(): 「」「ajax wiki搜索頁面」「」 this_page = db.page(request.args(0,cast = int))或重定向(URL('index' )) return dict(form = FORM(INPUT(_id ='keyword',_ name ='keyword',_onkeyup =「ajax('callback',['keyword'],'target');」)),target_div = DIV(_id ='target'))' – Clemens