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" <[email protected]> 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 <[email protected]> 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" <[email protected]> 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" <[email protected]> wrote:
>
> > > > I'll submit a patch.
>
> > > > On Aug 27, 9:59 pm, Jose <[email protected]> wrote:
>
> > > > > On 28 ago, 01:44, "mr.freeze" <[email protected]> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---