有没有什么简单的方法可以通过输入的type=“文件”从.load视图发送文件到我的控制器?或者,有没有办法用JQuery做到这一点?
发布于 2017-01-07 06:17:49
默认情况下,Ajax LOAD()组件中的表单将被捕获并通过Ajax提交。但是,用于提交的方法不适用于文件上传。相反,您可以通过向表单元素添加"no_trap“类并设置自己的表单提交处理程序来覆盖默认行为。
在包含表单的视图中:
<form id="upload_form" class="no_trap">...</form>或者,如果表单是在控制器中生成的:
form = SQLFORM(..., _id='upload_form', _class='no_trap')在包含组件的视图中,添加一个显式的"target“(供以后参考):
{{=LOAD('mycontroller', 'myfunction.load', ajax=True, target='upload_form')}}要处理文件上传,可以使用FormData接口。有关一些想法,请参阅http://blog.teamtreehouse.com/uploading-files-ajax。您还可以考虑使用库,例如jQuery File Upload。
一旦构建了FormData,就可以按如下方式发布到web2py:
$.web2py.ajax_page('post', url, formData, 'upload_form', form)其中url是Ajax组件的URL,formData是通过表单提交处理程序构造的FormData对象,form是jQuery表单对象(即$('form#upload_form'))。这将把表单数据发送到URL,并用返回的超文本标记语言替换"upload_form“目标。
https://stackoverflow.com/questions/41512000
复制相似问题