gpt4 book ai didi

ajax - Scala提升框架,提交多个值的ajax表单?

转载 作者:行者123 更新时间:2023-12-04 13:56:02 24 4
gpt4 key购买 nike

我刚刚开始使用lift,我现在正在尝试将普通表单更改为ajax 表单,但方法processEntryAdd永远不会被调用。

def addUser(xhtml : Group) : NodeSeq = {

var firstName = ""
var lastName = ""

def processEntryAdd() {
Log.info("processEntryAdd: " + firstName + ", " + lastName)
}

SHtml.ajaxForm(
bind("entry", xhtml,
"firstName" -> SHtml.text(firstName,
(x) => {
Log.info("Setting firstName to " + x);
firstName = x
}),
"lastName" -> SHtml.text(lastName,
(x) => {
Log.info("Setting lastName to " + x);
lastName = x
}),
"submit" -> SHtml.submit("Add user", processEntryAdd),
))
}

任何想法如何实现我想要做的事情,或者为什么上面的代码不起作用。
按下按钮时提交两个表单域的值和两个局部变量 firstNamelastName已设置但未调用与 SHtml.submit 关联的函数。

谢谢!

最佳答案

这个问题有点老了,但我最近需要自己知道这一点,这是迄今为止我见过的最好的解决方案:

ajaxForm(
bind("entry", xhtml,
"firstName" -> text(firstName, firstName = _),
"lastName" -> text(lastName, lastName = _),
"submit" -> submit("Add user", processEntryAdd _),
) ++ hidden(processEntryAdd _)
)

通过将处理添加到隐藏的表单元素,您可以保留提交按钮,而无需更改任何 View 代码。

您可以通过让 processEntryAdd() 返回 JsCmd 来添加客户端行为:
def processEntryAdd() {
Log.info("processEntryAdd: " + firstName + ", " + lastName)
JsRaw("alert('process entry added')")
}

关于ajax - Scala提升框架,提交多个值的ajax表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com