Я пытаюсь отправить форму с использованием функции ajax
в web2py как explained in the book, но используя FORM
вместо SQLFORM
, так как я не хочу, чтобы данные хранились в базе данных.Как проверить форму web2py, представленную через AJAX?
ajax_test.html
{{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>
Контроллер внутри default.py:
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
. Несмотря на то, что я получаю доступ к пользовательскому вводу через request.vars.mytext
, тогда мне нужно будет его проверить самостоятельно, а не использовать возможности web2py.
Что мне не хватает?
Привет Антоний благодарит за ответ. Я изменил второй аргумент на '" #myform ", но я получаю тот же результат. Я знал о скрытом значении '_formkey', но по какой-то причине он не генерируется. HTML-код формы: '
'. Есть идеи? – cdontsСм. Обновленный ответ. Вы должны обработать форму, когда она изначально создана, так что код не может находиться внутри блока if if.hax:. – Anthony
Отлично! Большое спасибо. – cdonts