Thanks for that very helpful snippet Bruno.

Just a follow-up, will it be possible for the 'target' parameter below
be a jQuery function? I wanted to do some further processing on the
browser side when callback returns.

ajax("{{=URL('default','mycontroller')}}"+args ,[],'target');



On Aug 31, 6:18 pm, Bruno Rocha <rochacbr...@gmail.com> wrote:
> I dont know if this is the best approach, but I juste tested here and works.
>
> On Wed, Aug 31, 2011 at 2:17 AM, Noel Villamor <noe...@gmail.com> wrote:
> > I wanted to pass an array from jQuery to a controller.
>
> > <script>
> > var xyz= ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
> > $(function() {
> >     $("body").click(function(event) {
>
> >  ajax("{{=URL('default','mycontroller')}}"+"?array="+xyz,[],'target');
>
>     });> });
> > </script>
>
> > the above will call this url:
>
> /default/mycontroller?array=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
>
> > def mycontroller():
> >    # Here, I wanted to receive xyz as an array.
>
>       myarray = eval(request.vars.array)
>
> the above will receive the string and evaluate as a Python list.
>
> (BUT, BE CAREFUL!! it can be used to crash your app)
>
> another solution may be better than the above, is to split the array as args
> and pass it separated.
>
> <script>
>
> var xyz= ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
> args = xyz.join("/")
>
>  $(function() {
>      $("body").click(function(event) {
>             ajax("{{=URL('default','mycontroller')}}"+args ,[],'target');
>
>      });
>
> });
>
> </script>
>
> the url will be called as
>
> /default/mycontroller/Sun/Mon/Tue/Wed/Thu/'Fri/Sat
>
> in controller
>
> def mycrontroller():
>
>     array = request.args
>     array[0] # "Sun"
>
> The second approach is better ans safe.
> --
>
> --
> Bruno Rocha
> [ About me:http://zerp.ly/rochacbruno]
> [ Aprenda a programar:http://CursoDePython.com.br]
> [ O seu aliado nos cuidados com os animais:http://AnimalSystem.com.br]
> [ Consultoria em desenvolvimento web:http://www.blouweb.com]

Reply via email to