我有一个由 AJAX 调用生成并返回的 web2py SQLFORM,并且该表单被放入我定义的 DIV 中。我希望该 SQLFORM 成为更新表单,而不是插入表单。问题是表单一旦写入该 DIV 就会立即运行它的接受功能。如果表单用于插入,仅用于更新,则不会发生这种情况。最初的接受失败并且点击提交按钮不允许第二次接受。我不知道为什么接受失败或为什么会立即发生。
这是进行 AJAX 调用的 JavaScript 函数
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。不工作。我不知道发生了什么,对此有任何解释吗?