开发者

How to avoid ajax timeouts on lift?

I'm using ajax+comet to build an iterative form. When it is submited, an output file is downloaded.

def render = ajaxForm(bind("form",/*...*/
  "submit" -> ajaxSubmit("Calculate",result _)))++hidden(result _)

private def result : JsCmd = {
  /* Some really time-consuming calculations */
  JsCmds.RedirectTo("/result/"+uniqueId)
}

It works most cases. Although, as there are some really long-lasting calculations, I'm getting the "the server could not respond" message (sometimes it just doesn't redirect with no error message).

I tried to reconfigure the ajax timeout:

LiftRules.ajaxPostTimeout = Int.MaxValue

But even than It's still not redirecting.

I could also decouple the redirect part from the calculations and do something like:

{val func = ajaxInvoke({() => JsCmds.RedirectTo("/result/"+uniqueId)})._2.cmd
Script(OnLoad(func))}

But I need to 开发者_开发百科replace OnLoad for something that works on reRender and not only on full page reload. Or maybe to force somehow my page to reload without client iteraction.


LiftRules var ajaxPostTimeout = 5000 //m

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜