【问题标题】:Does web2py ajax() function really work with onchange event of <input type=file>?web2py ajax() 函数真的适用于 <input type=file> 的 onchange 事件吗?
【发布时间】:2015-01-22 19:00:08
【问题描述】:

在我的 web2py 应用程序中,我需要在上传之前处理来自 &lt;input type="file" /&gt; 字段的文件名。此处理将使用正则表达式分析文件名并在允许用户提交表单之前填写其他表单字段。

我的第一步是获取文件名以便处理它。直到现在,我都没有得到它。根据我对 web2py 文档的解释,我发现 ajax() 函数应该可以解决问题。

这是我的代码块。 查看:

<form>File to upload:
    <input name="zefilename" type="file" onchange="ajax('{{=URL('default', 'analyse_version_data')}}', ['zefilename'], 'target')"/>
    <!-- Other fields go here -->
    <div id="target"></div>
</form>

控制器:

def analyse_version_data():
    filename = request.vars.zefilename
    return P(filename)

如果我的输入类型不是type="file",那么它就像一个魅力,输入值显示在目标div中。

但是如果type="file" 存在,我什么也得不到。 request.vars 保持为空:&lt;Storage {'_vars': &lt;Storage {}&gt;,...

我可能遗漏了一些东西,但我不知道是什么......

感谢您的帮助。

【问题讨论】:

    标签: html ajax forms file-upload web2py


    【解决方案1】:

    您的代码试图通过 Ajax 发送整个文件,而不仅仅是发送文件名。要仅发送文件名,请不要使用 ajax() 函数的第二个参数,而是将文件名添加到 Ajax URL 的查询字符串中:

    <form>File to upload:
        <input name="zefilename" type="file"
               onchange='ajax("{{=URL('default', 'analyze_version_data')}}?filename=" +
                              encodeURIComponent(jQuery(this).val()), [], "target");' />
        <!-- Other fields go here -->
        <div id="target"></div>
    </form>
    

    控制器:

    def analyse_version_data():
        return P(request.vars.filename)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 2017-04-07
      • 2019-01-27
      • 1970-01-01
      • 2011-04-01
      相关资源
      最近更新 更多