You might want to look at http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
The only fiddly bit is to make sure you set the cookies correctly (see the documentation for details). For example: {{view}} response.files.append(URL('static','js/jquery.fileDownload/jquery.fileDownload.js')) {{controller}} response.js = '$.fileDownload("http://127.0.0.1:8000/sgddms/label/download_func1?var1=2676&var1=2673&var1=2678");' response.js += '$.fileDownload("http://127.0.0.1:8000/sgddms/label/download_func1?var1=2676&var1=2673&var1=2678");' # these cookies are required by jQuery.fileDownload.js # to enable download via ajax response.cookies['fileDownload'] = 'true' response.cookies['fileDownload']['path'] = "/" On Wednesday, March 19, 2014 1:38:43 PM UTC+13, Richard wrote: > > :( > > I already have a workaround where I show buttons for starting download for > each files that are appended on submit, but I hate that from user > experience point of view... I thought about an other solution, where I > could get vars values from javascritp once form is submit trought > session.var but I am not sure it will work. > > Do you know such a library? > > Thanks > > Richard > > > On Tue, Mar 18, 2014 at 6:05 PM, Niphlod <nip...@gmail.com > <javascript:>>wrote: > >> content-disposition on ajax requests is not allowed, therefore browser >> refuse to show the usual "download as file" dialog, plain and simple :D >> >> You need to come up with an alternative plan (such as, opening a new >> window pointing to the url, open a hidden iframe, using 3rd party libraries >> that do the previous, etc) >> >> >> On Tuesday, March 18, 2014 9:59:40 PM UTC+1, Richard wrote: >>> >>> Hello, >>> >>> I want to call 2 functions that return a file to be upload/download into >>> client computer... I have been able to make the first call page to upload >>> file correctly, but I can't figure out how to make upload both files, I >>> thought I could solve the issue with ajax call, no lock. >>> >>> # controller >>> >>> def form_func_that_call_my_download_funcs(): >>> ... >>> if form.process().accpet: >>> ... >>> redirect(URL(c='label', f='download_func1', extension=False, >>> vars=dict(var1=var1, **other_vars_dict)), >>> client_side=True) # This work for one file as it should... >>> ... >>> >>> >>> def shell_func(): >>> return dict(a='') >>> >>> >>> # view >>> # shell_func() >>> <div id="batch_div"> >>> {{=LOAD('lotns', 'other_func_that_just_return_so_var_input', >>> extension='load', ajax=True, target='batch_div')}} >>> <!-- On submit of this view form_func_that_call_my_download_funcs() is >>> loaded below with web2py_component() --> >>> </div> >>> >>> <div id="form_func_that_call_my_download_funcs_div"> >>> <!-- form_func_that_call_my_download_funcs() loaded here with >>> web2py_component() --> >>> </div> >>> >>> >>> I try to change form_func_that_call_my_download_funcs() like this : >>> >>> def form_func_that_call_my_download_funcs(): >>> ... >>> if form.process().accpet: >>> ... >>> response.js = "$.get(url='http://127.0.0.1: >>> 8000/sgddms/label/download_func1?var1=2676&var1=2673&var1=2678');" >>> response.js += "$.get(url='http://127.0.0.1: >>> 8000/sgddms/label/download_func2?var1=2676&var1=2673&var1=2678');" # I >>> see the call passing in chrome dev tool both the files are not download??? >>> Try with $.post() too... >>> ... >>> >>> >>> # Here what look my download function, both are the same so I just show >>> the important thing in one of them... >>> def download_func1(): >>> ... >>> final = StringIO(final_wordml) >>> response.headers['Content-Type'] = 'xml' >>> response.headers['Content-Disposition'] = \ >>> 'attachment;filename=filename123_%s.xml;' % >>> request.now.strftime('%Y-%m-%d_%H-%M-%S-%f') >>> response.write(final.getvalue(), escape=False) >>> raise HTTP(200, str(final.getvalue()), **response.headers) >>> >>> >>> Thanks for any pointer! >>> >>> Richard >>> >> -- >> 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+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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/d/optout.