如何在Lift(Scala)中ajax提交表单后重新提交部分页面
这可能是一个愚蠢的问题,但我不知道怎么做。 所以我是Scala/Lift新手,我阅读了中的ajax表单一章,但是示例中的“重定向到”对我来说似乎不是很“ajaxian”。通常在通过ajax提交表单的情况下,您只需部分重新提交同一页面,对吗? 所以这就是我正在尝试做的,我现在完全失败了。 在通过ajax提交表单后,如何让Lift Reender只是同一页面的一部分 如有任何提示,将不胜感激。谢谢 基本上,我所拥有的是这样的:如何在Lift(Scala)中ajax提交表单后重新提交部分页面,ajax,forms,scala,lift,form-submit,Ajax,Forms,Scala,Lift,Form Submit,这可能是一个愚蠢的问题,但我不知道怎么做。 所以我是Scala/Lift新手,我阅读了中的ajax表单一章,但是示例中的“重定向到”对我来说似乎不是很“ajaxian”。通常在通过ajax提交表单的情况下,您只需部分重新提交同一页面,对吗? 所以这就是我正在尝试做的,我现在完全失败了。 在通过ajax提交表单后,如何让Lift Reender只是同一页面的一部分 如有任何提示,将不胜感激。谢谢 基本上,我所拥有的是这样的: <div id="main" class="lift:su
<div id="main" class="lift:surround?with=default;at=content">
<h2>Welcome to your project!</h2>
<div class="lift:Test">
<div>
<form class="lift:form.ajax">
<fieldset>
<label for="name">Name:</label>
<input id="name" name="name" type=text>
<p></p>
<input id="save" type="submit" value="Save">
</fieldset>
</form>
</div>
<div>
<span id="theName">Name</span>
</div>
</div>
</div>
class Test {
def render = {
var name = ""
def process(): JsCmd = {
Thread.sleep(500)
S.notice("Entered name is: %s".format(name))
Noop
}
"#theName " #> "This shall be updated with the name given in the form above" &
"#name" #> (SHtml.text(name, name = _) ++ SHtml.hidden(process))
}
}
欢迎来到你的项目!
姓名:
名称
课堂测试{
def呈现={
var name=“”
def process():JsCmd={
线程。睡眠(500)
S.notice(“输入的名称为:%S”。格式(名称))
努普
}
“#名称”#>“应使用上述表格中给出的名称更新该名称”&
“#name”#>(SHtml.text(name,name=#)++SHtml.hidden(进程))
}
}
提交表单时如何更新“theName”?请查看()。有
SHtml.memoize
和SHtml.idMemoize
自动缓存HTML代码。不确定为什么在简单提升手册的本例中不使用它。您有一个两步表单,对吗?上面的海报是正确的
将转换保存在RequestVar
中
在上面的示例中,要保存的方法是render,因此首先要记住变换:
private def renderTest= SHtml.memoize { render }
然后,您可以将此记忆转换保存在RequestVar(持续1个请求)中,或者根据您的需要保存在TransientRequestVar
中
private object testTemplate extends RequestVar(renderTest)
当您想要从ajax事件testTemplate.is.ApplyGain重播转换时
我可能误解了原来的问题,b/c如果你想做一个两步表格,你真的不需要备忘录。备忘录是指如果当前表单发生了更改,并且您希望通过ajax事件(即单击或更改)进行更新,通常情况下,除非您进行ajax提交,否则表单不会更新。谢谢您的提示,但我仍然不确定如何进行更新。因为我的页面上有两个部分:添加新条目的表单和条目列表(我希望在提交表单后更新)。基本上,就像simply lift第2章中的聊天示例一样。除非我不想用comet的东西来做这件事——这对我想要完成的事情来说似乎有点过分了。你知道一个更详细的例子吗?如果你知道怎么做,你能解释一下吗。我想使用带lift和不带comet的ajax。