1

我有一个由 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。不工作。我不知道发生了什么,对此有任何解释吗?

4

1 回答 1

0

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

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

它不漂亮,但它有效。

于 2013-07-23T17:05:52.600 回答