私はweb2pyのajax
機能を使用してフォームをexplained in the bookとして送信しようとしていますが、SQLFORM
の代わりにFORM
を使用しています。データをデータベースに格納したくないためです。AJAX経由で送信されたweb2pyフォームを検証する方法は?
def ajax_test():
form = FORM(
INPUT(_type="text", _name="mytext", _id="mytext",
requires=IS_NOT_EMPTY()),
INPUT(_type="submit"),
_id="myform"
)
if request.ajax:
if form.accepts(request.vars, session):
return DIV("Form submitted.")
elif form.errors:
return TABLE(*[TR(k, v) for k, v in form.errors.items()])
else:
return DIV("Couldn't check form.")
return dict(form=form)
フォームが送信される(request.ajax == True
)、form.accepts
とform.errors
リターンFalse
両方:default.py内部
{{extend "layout.html"}}
<h2>Form</h2>
{{=form}}
<script>
jQuery("#myform").submit(function() {
ajax("{{=URL('ajax_test')}}",
["mytext"], "output");
return false;
});
</script>
<h2>Output</h2>
<div id="output"></div>
コントローラajax_test.html
。 request.vars.mytext
でユーザーの入力にアクセスしても、web2pyの機能を使用する代わりに、自分で検証する必要があります。
私には何が欠けていますか?
こんにちはアンソニーは答えてくれてありがとう。私は第2引数を '' #myform "'に変更しましたが、私は同じ結果を得ています。私は '_formkey'隠し値を知っていましたが、何らかの理由でそれが生成されていません。フォームのHTMLコードは次のとおりです。
'。何か案は? – cdonts最新の回答をご覧ください。フォームが最初に作成されたときにフォームを処理しなければならないので、コードは 'if request.ajax:'ブロック内にあることができません。 – Anthony
パーフェクト!どうもありがとう。 – cdonts