Liftweb:创建一个既可以传统提交也可以使用AJAX提交的表单

在Lift web框架中,是否可以创建通过AJAX进行响应但也可以在不支持Javascript的情况下工作的表单(和链接)?如果是,怎么做

当我使用构建表单时<lift:form.ajax&gt,表单的操作被设置为javascript://,因此它不再在没有JS的情况下提交。如果我构建表单时没有明确的AJAX支持,我不知道如何插入AJAX功能

我想我可以构建一个RESTful接口(无论如何我们都必须构建它),然后编写定制Javascript来提交表单。不过,我希望避免代码重复:如果可以用相同的代码处理所有三个输入(RESTful、传统HTTP POST、AJAX),那就最好了

看看http://demo.liftweb.net/form_ajax

FormWithAjax.scala

类FormWithAjax扩展了StatefulSnippet{
private var firstName=“”
private var lastName=“”
private val from=S.referer openOr“/”
def调度={
案例=>呈现_
}
def render(xhtml:NodeSeq):NodeSeq=
{
def validate(){
(firstName.length,lastName.length)匹配{
如果f<2&n<2=>S.错误(“名字和姓氏太短”),则为案例(f,n)
如果f<2=>S.error(“名字太短”),则为案例(f,41;
如果n<2=>S.error(“姓氏太短”),则为大小写(uu,n)
case=>S.notice(“谢谢!”);S.redirectTo(from)
}
}
绑定(“表单”,xhtml,
“first”->textAjaxTest(firstName,s=>firstName=s,s=>{s.notice(“first name”+s);Noop}),
“last”->textAjaxTest(lastName,s=>lastName=s,s=>{s.notice(“lastName”+s);Noop}),
“提交”->提交(“发送”,验证)
)
}

form_ajax.html

<提升:用=“default”at=“content”环绕;
输入您的姓名:<br>
<form class=“lift:FormWithAjax?form=post”>
名字:<形式:第一></form:First>
姓氏:<格式:Last></form:Last>
<表格:提交></form:submit>
</form>
</lift:环绕>

这将在没有javascript的情况下工作:

<form action=“/form\u ajax”method=“post”>
<input name=“F1069091373793VHXH01”type=“hidden”value=“true”>
名字:<input value=“”type=“text”Name=“F1069091373788OVAAWQ”onblur=“liftAjax.lift\u ajaxHandler('f10690913789n2ao0c='”+encodeURIComponent(this.value),null,null,null)”>
姓氏:<input value=“”type=“text”Name=“F1069091373790VANYVT”onblur=“liftAjax.lift_ajaxHandler('f10690913791cjmqdy='”+encodeURIComponent(this.value),null,null,null)”>
<input name=“F1069091383792JGBYWE”type=“submit”value=“Send”>
</form>

发表评论