web2py SQLFORM接受速度太快

时间:2013-07-20 00:21:36

标签: sql web2py

我有一个web2py SQLFORM,它由AJAX调用生成并返回,表单放在我定义的DIV中。我希望SQLFORM是一个更新表单,而不是插入表单。问题是表单一旦写入DIV就会立即运行它的accept函数。如果表单用于插入,仅更新,则不会发生这种情况。初始接受失败并按下提交按钮不允许第二次接受。 我不知道为什么接受失败或为什么会立即发生。

继承了进行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。不行。我不知道对此有何解释是什么?

1 个答案:

答案 0 :(得分:0)

通过使用iFrame方法,我实际上得到了这个。由于它需要iFrame附加需要引号的jQuery和也需要引号的iFrame URL,因此符号变得非常混乱,但它是可行的。看起来像这样:

var myURL = "{{=URL('editEntry')}}/"+idArg.toString();
$('#window').append("<iframe src = " + myURL + "  width='450' height='400'> </iframe>");

它不漂亮但它有效。