Hello, I tried the trunk version and again it almost works :)
1. the RequestVars aren't preserved for the ajax request. I think this can be fixed by replacing in SHtml:692 the NFuncHolder with a call to contextFuncBuilder, so the method would look like this: def doit = makeFormElementWithName("submit", contextFuncBuilder(func), attrs: _*){ case (funcName, elem) => elem % new UnprefixedAttribute("value", Text(value), Null) % ("onclick" -> ("liftAjax.lift_uriSuffix = '"+funcName+"=_'; return true;")) } I tested it on my example application (http://github.com/adamw/lift-ajax-submit-test) and it works. 2. The button will work only with full ajax-forms right? So forms wrapped with ajaxForm(...)? My initial use-case was for adding some ajax buttons to normal forms (submitted with a normal http request), but I guess I can make the whole form submitted with ajax. Thanks! Adam > Most likely I'll commit it today in master as it was approved by > review board. > > Br's, > Marius > > On Jan 14, 9:53 am, Adam Warski <a...@warski.org> wrote: >> I would of course be very +1 to include the ajaxSubmit :). Thanks for the >> work. >> >> This looks a bit different to the button I tried before, maybe you have a >> patch so that I can try it out on the test app? >> >> Adam >> >> On Jan 12, 2010, at 8:39 PM, Marius wrote: >> >>> Dear all, >> >>> Recently (and not only) there have been discussions about ajax forms >>> and their submit Scala functions not being called and that's because >>> JQuery's form serialization doesn't serialize the input submits (for >>> pertinent reasons). The workaround is as you know to use hidden >>> fields. >> >>> Adam also wanted an ajax form with multiple submit buttons taking >>> different actions depending on which button is being called. This is >>> also *doable* using hidden fields .... but not quite from elegant. >> >>> I've experimented a way to allow ajax form submission but after all >>> form field functions are being called your own ajax Scala function is >>> being called (with no hidden fields). the idea is this: >> >>> 1. I added an SHtml.ajaxSubmit which has the same signature with >>> SHtml.submit >>> 2. At js level I added a liftAjax.lift_uriSuffix >>> 3. When clicking the ajaxSubmit button we set the >>> liftAjax.lift_uriSuffix with the function name value. This is the >>> function name of your scala function. Hence your scala function for >>> ajaxSubmit will be called after form field functions are called. >> >>> In short we "piggy back" the Scala function info on top of the >>> serialized form info. >> >>> I tested it and it works just fine for me: >> >>> Using it looks something like like: >> >>> ajaxForm(bind("hello", xhtml, >>> "field1" -> text("", (s) => {println("field1 = " + s)}), >>> "field2" -> text("", (s) => {println("field2 = " + s)}), >>> "field3" -> text("", (s) => {println("field3 = " + s)}), >>> "submit" -> ajaxSubmit("Press me", () => { >>> println("my ajax func called.") >>> Noop >>> })) >> >>> ... you got the idea. >> >>> This of course allows putting virtually any number of ajax submit >>> buttons and the right function will be called on server side. >> >>> I'm thinking to add this to Lift but first I'd like to know your >>> thoughts. >> >>> Br's, >>> Marius >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "Lift" group. >>> To post to this group, send email to lift...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> liftweb+unsubscr...@googlegroups.com. >>> For more options, visit this group >>> athttp://groups.google.com/group/liftweb?hl=en. > -- > You received this message because you are subscribed to the Google Groups > "Lift" group. > To post to this group, send email to lift...@googlegroups.com. > To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/liftweb?hl=en. > >
-- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@googlegroups.com. To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.