【问题标题】:File upload using PrototypeJs method $('formId').request()使用 PrototypeJs 方法 $('formId').request() 上传文件
【发布时间】:2026-01-23 09:50:01
【问题描述】:

我尝试使用 PrototypeJs 请求方法上传文件,但失败了。

我正在使用的代码,

<form enctype="multipart/form-data" id="form1" runat="server" action="ajax.aspx"
onsubmit="upMe(this);return false;" >

如果我返回 true 而不是 false,则文件已上传,但这会导致回发,因为我使用 PrototypeJs 的方法请求。

而且upMe这个功能很简单,

function upMe(frmEle) {
        $(frmEle).request({
            method: 'post',
            parameters: {},
            onComplete: function() { alert('file has been uploaded'); }
        });
    }

以上述方式上传文件我缺少什么?

非常感谢。

【问题讨论】:

    标签: javascript file-upload prototypejs


    【解决方案1】:

    问题是您使用 AJAX 而不是普通的提交方法来发布表单。这将需要 JavaScript 来读取文件并将其包含在提交中,但正如您可以想象的那样,脚本从客户端读取本地文件的能力将是一个很大的安全风险:-)

    这个问题的答案是使用隐藏的&lt;iframe&gt; 元素,然后向它提交请求。您可以将事件处理程序注册到 iframe 的 onload 事件以实现 oncomplete 样式回调。

    http://www.openjs.com/articles/ajax/ajax_file_upload/

    【讨论】:

    • 非常感谢。使用 Iframe 就像提交导致部分回发而不是 Ajax 方式的文件。虽然使用 Ifrmae 的目的是服务。您是否介意提供一个在文件上传中真正播放 ajax 的示例。