我有一個web2py SQLFORM生成並通過AJAX調用返回並將窗體放入我定義的DIV中。我希望SQLFORM是更新窗體,而不是插入窗體。問題是表單一旦寫入DIV就立即運行它的接受函數。如果表單僅用於插入,則不會發生這種情況,只能進行更新。初始接受失敗,點擊提交按鈕不允許第二次接受。 我不知道爲什麼接受失敗或爲什麼立即發生。web2py SQLFORM接受太快
繼承人的JavaScript函數,使AJAX調用
function displayForm(currID){
//Remove everything from the DIV we want to use
$('#window').empty();
//Call the ajax to bring down the form to update the series
ajax('{{=URL('newForm')}}/'+currID,
[], 'window');
}
這裏是newForm控制器
def newSerForm():
record = db.myTable(request.args[0])
form = SQLFORM(db.myTable, record, fields=['series_name','image_thumbnail'])
if form.accepts(request.vars,session):
print 'Series update successful!'
else:
print 'Series update Failed...'
return form
displayForm通過點擊一個按鈕激活,一旦你做的形式接受和失敗,提交按鈕不能再工作。有沒有辦法讓SQLFORM做到這一點?奇怪的是,如果我改變這個插入到myTable中,它可以正常工作。它的行爲與其應該完全相同。但這樣做並不行。
好吧,現在這是它變得奇怪。 我試圖用完全不同的方法實現相同的功能,即一個iFrame。我在創建基於request.args [0]的表單的控制器中創建了新的函數。看起來像這樣
def editEntry():
print request.args[0]
record = db.myTable(request.args[0])
form = SQLFORM(db.CC_user_submission, record, fields=['series_name', 'image_thumbnail']).process()
return dict(form=form)
然後一個相應的HTML頁面,只是顯示窗體。什麼可能更簡單的權利?我根據提供正確參數的鏈接轉到該頁面。帶我到一個帶更新表格的頁面。更新完美。太好了,現在讓我們把它放在一個iFrame中,而不是鏈接到它。我把它放在原始頁面上的iFrame中。打開iFrame。不起作用。我不知道發生了什麼,有沒有解釋的一部分?