I did not get your point then. Let me look into this more. I am
travelling this week end but I will look at this asap.

Massimo

On Aug 29, 9:42 am, "mr.freeze" <nat...@freezable.com> wrote:
> My point is that the web2py_ajax.html ajax function behaves
> differently than a normal submit, which is confusing.
>
> On Aug 29, 3:23 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > I disagree:
>
> > if(jQuery(this).is(':checked')
>
> > On Aug 28, 6:37 pm, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > Seems like a lot of work to get the status of a checkbox but I guess
> > > changing the web2py_ajax.html ajax function to use jQuery.serialize
> > > wouldn't be truly backwards compatible since people have already
> > > implemented workarounds such as this.  Oh well.  I think the best
> > > option is to avoid the web2py_ajax.html ajax function use jQuery.ajax
> > > instead as it can serialize form elements properly.
>
> > > On Aug 28, 10:15 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > I would do something like this instead:
>
> > > > 1) make sure all checkboxes have an ID
>
> > > > 2) insert this in view
> > > > <script>
> > > > jQuery(document).ready(function() {
> > > >   jQuery(':checkbox').change(function() {
> > > >     var status;
> > > >     if(jQuery(this).is(':checked') status='1'; else status='0';
> > > >     ajax('{{=URL(r=request,f='yourcallback')}}/'+jQuery(this).attr
> > > > ('id')+'/'+status,[],null);
> > > >   });});
>
> > > > </script>
>
> > > > then in controller
>
> > > > def yourcallback():
> > > >     checkbox_id=request.args(0)
> > > >     status=request.args(1)
> > > >     ... store the status of checkbox_id....
> > > >     return  None
>
> > > > On Aug 28, 9:41 am, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > > > How about this: Forget ajaxForm and in the ajax function, if s is a
> > > > > string, it acts as a jQuery selector, otherwise it acts normally.
> > > > > That would make it more flexible:
>
> > > > > function ajax(u,s,t) {
> > > > >     query = '';
> > > > >     if (typeof s == "string"){
> > > > >         d = jQuery(s).serialize();
> > > > >         if(d){query = d;}
> > > > >     }else{
> > > > >         pcs = [];
> > > > >         for(i=0; i<s.length; i++) {
> > > > >             q = jQuery("#"+s[i]).serialize();
> > > > >             if(q){pcs.push(q);}
> > > > >         }
> > > > >         if (pcs.length>0){query = pcs.join("&");}
> > > > >     }
> > > > >     jQuery.ajax({type: "POST", url: u, data: query, success: function
> > > > > (msg) { if(t==':eval') eval(msg); else jQuery("#" + t).html
> > > > > (msg); } });
>
> > > > > }
>
> > > > > On Aug 28, 2:46 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > > > I suggest you don't send the entire form but just the state of the
> > > > > > button you clicked. It will have much faster response.
>
> > > > > > Massimo
>
> > > > > > On Aug 28, 12:28 am, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > > > > > I sent a patch to Massimo but for posterity, here is the fixed 
> > > > > > > ajax
> > > > > > > function and added an ajaxForm(url,formIndex,targetResponseID)
> > > > > > > function that grabs the entire form (by index i so use 0 for 
> > > > > > > single
> > > > > > > form pages):
>
> > > > > > > function ajax(u,s,t) {
> > > > > > >   query = [];
> > > > > > >   for(i=0; i<s.length; i++) {
> > > > > > >          q = jQuery("#"+s[i]).serialize();
> > > > > > >          if(q){query.push(q);}
> > > > > > >   }
> > > > > > >   jQuery.ajax({type: "POST", url: u, data: query.join("&"), 
> > > > > > > success:
> > > > > > > function(msg) { if(t==':eval') eval(msg); else jQuery("#" + 
> > > > > > > t).html
> > > > > > > (msg); } });
>
> > > > > > > }
>
> > > > > > > function ajaxForm(u,i,t){
> > > > > > >         frm = jQuery("form:eq(" + i + ")");
> > > > > > >         query = 'undefined=' + i;
> > > > > > >         if (frm.length==1){query = frm.serialize();}
> > > > > > >         jQuery.ajax({type: "POST", url: u, data: query, success: 
> > > > > > > function
> > > > > > > (msg) { if(t==':eval') eval(msg); else jQuery("#"+t).html
> > > > > > > (msg); } });
>
> > > > > > > }
>
> > > > > > > On Aug 27, 10:01 pm, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > > > > > > I'll submit a patch.
>
> > > > > > > > On Aug 27, 9:59 pm, Jose <jjac...@gmail.com> wrote:
>
> > > > > > > > > On 28 ago, 01:44, "mr.freeze" <nat...@freezable.com> wrote:
>
> > > > > > > > > > Did you try my altered ajax function?
>
> > > > > > > > > Works well!. You can add it to the trunk?
>
> > > > > > > > > Jose- Hide quoted text -
>
> > > > > > - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to