我正在使用ajax + comet来构建迭代表单。提交后,将下载输出文件。
def render = ajaxForm(bind("form",/*...*/
"submit" -> ajaxSubmit("Calculate",result _)))++hidden(result _)
private def result : JsCmd = {
/* Some really time-consuming calculations */
JsCmds.RedirectTo("/result/"+uniqueId)
}
它适用于大多数情况。虽然,由于有一些非常持久的计算,我得到“服务器无法响应”消息(有时它只是没有重定向而没有错误消息)。
我尝试重新配置ajax超时:
LiftRules.ajaxPostTimeout = Int.MaxValue
但即使它还没有重定向。
我还可以将重定向部分与计算分离,并执行以下操作:
{val func = ajaxInvoke({() => JsCmds.RedirectTo("/result/"+uniqueId)})._2.cmd
Script(OnLoad(func))}
但我需要替换OnLoad以获取适用于reRender的内容,而不仅仅是整页重新加载。或者可能以某种方式强制我的页面在没有客户端迭代的情况下重新加载。
答案 0 :(得分:2)
LiftRules var ajaxPostTimeout = 5000 // m