def echo(): value = request.post_vars.f_item_category filtered_sub = db(db.t_sub_categories.f_category_id == value).select(db.t_sub_categories.ALL,orderby=db.t_sub_categories.f_sub_category_name, cache=(cache.ram,10),cacheable=True) filtered_sub = dict(filtered_sub = filtered_sub) select_header = "<select id='t_items_f_item_subcategory' class='generic-widget' name='f_item_subcategory'> \ <option value=''></option>" select_footer = '</select>' def select_body(): for f in filtered_sub: #return "<option value='f.id'>" + f.f_item_subcategory + "</option>" return 'test' return select_footer + select_body() + select_footer
This will render 'test' just once(where expected more). I think the problem is that the filtered_sub = dict() from some reason. If I replace the return 'test' with: return "<option value='f.id'>" + f.f_item_subcategory + "</option>" It flashes an error. Thanks. On Saturday, October 5, 2013 10:32:43 AM UTC+3, Avi A wrote: > > Thanks. Yes, I will look carefully, but it looks like the html is in the > controller. > > On Saturday, October 5, 2013 2:31:10 AM UTC+3, Derek wrote: >> >> This question gets asked frequently here, there should be a FAQ somewhere >> and this should be in it... >> >> Is this what you want? >> >> http://www.web2pyslices.com/slice/show/1467/cascading-drop-down-lists-with-ajax >> >> On Friday, October 4, 2013 2:04:41 PM UTC-7, Avi A wrote: >>> >>> I was exactly pasting it actually :). >>> >>> def echo(): >>> value = request.post_vars.f_item_category >>> filtered_sub=db(db.t_sub_categories.f_category_id == >>> value).select(db.t_sub_categories.ALL,orderby=db.t_sub_categories.f_sub_category_name, >>> >>> cache=(cache.ram,10),cacheable=True) >>> >>> return dict(filtered_sub=filtered_sub) >>> >>> >>> >>> <select id="t_items_f_item_subcategory" class="generic-widget" >>> name="f_item_subcategory"> >>> <option value=""></option> >>> {{for f in filtered_sub:}} >>> <option value="{{f.id}}">{{=f.f_item_subcategory}}</option> >>> {{pass}} >>> </select> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> On Friday, October 4, 2013 11:26:24 PM UTC+3, Avi A wrote: >>>> >>>> One more question please, >>>> so now I have to build the filtered (with the value) sub categories >>>> select object's html in the controller and return into the target div? >>>> On Friday, October 4, 2013 11:08:30 PM UTC+3, Avi A wrote: >>>>> >>>>> That works...Awesome thanks. >>>>> >>>>> On Friday, October 4, 2013 10:14:37 PM UTC+3, Niphlod wrote: >>>>>> >>>>>> you where trying the exact same thing on the onselect, and I left it >>>>>> there as it was. >>>>>> If you want to send the value of the selected item as a post >>>>>> variable, use >>>>>> >>>>>> ajax('echo', '#t_items_f_item_category', 'target') >>>>>> >>>>>> you'll get request.post_vars.f_item_category filled in the echo >>>>>> function. >>>>>> >>>>>> On Friday, October 4, 2013 9:52:42 AM UTC+2, Avi A wrote: >>>>>>> >>>>>>> This test returns none: >>>>>>> def echo(): >>>>>>> return request.vars.value if request.vars else 'None' >>>>>>> >>>>>>> On Thursday, October 3, 2013 8:18:15 PM UTC+3, Avi A wrote: >>>>>>>> >>>>>>>> >>>>>>>> Hi, >>>>>>>> I'm trying to use the ajax function on a list , with no success so >>>>>>>> far. >>>>>>>> >>>>>>>> def echo(): >>>>>>>> return request.vars.value >>>>>>>> >>>>>>>> <select class="generic-widget" id="t_items_f_item_category" >>>>>>>> name="f_item_category"> >>>>>>>> <option value=""></option> >>>>>>>> {{for c in category:}} >>>>>>>> <option value='{{=c.id}}' onselect="ajax('echo', >>>>>>>> ['{{=c.id}}'],'target')" >>>>>>>> >{{=c.f_category_name}}</option> >>>>>>>> {{pass}} >>>>>>>> </select> >>>>>>>> >>>>>>>> <div id='target'></div> >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>> >>> On Friday, October 4, 2013 11:59:54 PM UTC+3, Niphlod wrote: >>>> >>>> are you asking to me to read your mind ? :D >>>> >>>> On Friday, October 4, 2013 10:26:24 PM UTC+2, Avi A wrote: >>>>> >>>>> One more question please, >>>>> so now I have to build the filtered (with the value) sub categories >>>>> select object's html in the controller and return into the target div? >>>>> On Friday, October 4, 2013 11:08:30 PM UTC+3, Avi A wrote: >>>>>> >>>>>> That works...Awesome thanks. >>>>>> >>>>>> On Friday, October 4, 2013 10:14:37 PM UTC+3, Niphlod wrote: >>>>>>> >>>>>>> you where trying the exact same thing on the onselect, and I left it >>>>>>> there as it was. >>>>>>> If you want to send the value of the selected item as a post >>>>>>> variable, use >>>>>>> >>>>>>> ajax('echo', '#t_items_f_item_category', 'target') >>>>>>> >>>>>>> you'll get request.post_vars.f_item_category filled in the echo >>>>>>> function. >>>>>>> >>>>>>> On Friday, October 4, 2013 9:52:42 AM UTC+2, Avi A wrote: >>>>>>>> >>>>>>>> This test returns none: >>>>>>>> def echo(): >>>>>>>> return request.vars.value if request.vars else 'None' >>>>>>>> >>>>>>>> On Thursday, October 3, 2013 8:18:15 PM UTC+3, Avi A wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> I'm trying to use the ajax function on a list , with no success so >>>>>>>>> far. >>>>>>>>> >>>>>>>>> def echo(): >>>>>>>>> return request.vars.value >>>>>>>>> >>>>>>>>> <select class="generic-widget" id="t_items_f_item_category" >>>>>>>>> name="f_item_category"> >>>>>>>>> <option value=""></option> >>>>>>>>> {{for c in category:}} >>>>>>>>> <option value='{{=c.id}}' onselect="ajax('echo', >>>>>>>>> ['{{=c.id}}'],'target')" >>>>>>>>> >{{=c.f_category_name}}</option> >>>>>>>>> {{pass}} >>>>>>>>> </select> >>>>>>>>> >>>>>>>>> <div id='target'></div> >>>>>>>>> >>>>>>>>> Thanks. >>>>>>>>> >>>>>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.