On Jan 15, 11:05 am, Adam Warski <[email protected]> wrote: > 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.
Oh yeah contextFuncBuider ... good catch. I'll update today. > > 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. Yes it is meant to work for ajaxForm. But for normal forms you can use submitAjaxForm you could use the ajaxButton I sent on a different thread. Not sure what the issue was with that as in my tests it worked fine. > > 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 <[email protected]> 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 [email protected]. > >>> To unsubscribe from this group, send email to > >>> [email protected]. > >>> 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 [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
