AJAX呼び出しによって生成および返されるweb2py SQLFORMがあり、フォームは定義したDIVに配置されます。そのSQLFORMを挿入フォームではなく更新フォームにしたいです。問題は、フォームがその DIV に書き込まれると、受け入れ機能をすぐに実行することです。フォームが挿入用で、更新のみの場合、これは発生しません。その最初の承認は失敗し、送信ボタンを押しても 2 回目の承認は許可されません。なぜ受け入れが失敗するのか、なぜすぐに起こるのかわかりません。
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 を開きます。うまくいきません。何が起こっているのかわかりません。これに対する説明の一部はありますか?