【问题标题】:Fileupload uploads files multiple timesFileupload 多次上传文件
【发布时间】:2015-09-10 13:54:48
【问题描述】:

我在一个 asp.net 网站上使用 jquery blueimp 文件上传时遇到了一个奇怪的问题。经过一些尝试,一个错误我让它运行起来没有太大问题,它或多或少地正常工作。但是,有一些我无法解决的奇怪行为。作为任何 jquery 插件的规范,它必须在页面加载后进行初始化。但是,我不能使用常规的 $(document).ready,因为它必须使用的 webform 包含多个更新面板,因此我需要使用 pageLoad 函数来保持插件在任何隐藏的回发后初始化更新面板可能会触发。现在,一旦我上传,就会出现奇怪的行为。如果我在网络表单中执行任何其他操作(导致更新面板中的操作),我尝试上传的下一个文件将被上传两次。如果我再做一个动作,我上传的下一个文件会上传 3 次,以此类推。

尝试销毁每个 pageLoad 上的插件似乎没有任何区别。并且在 $(document).ready 中初始化它没有任何效果,因为这只发生在第一次加载表单时。有任何想法吗?。谢谢

【问题讨论】:

  • 嗨。我有同样的问题。你解决了吗?

标签: jquery asp.net jquery-file-upload blueimp


【解决方案1】:

是的,我解决了,对不起,我忘了我在这里问过,所以我没有回来发布答案,所以任何可能遇到类似问题的人都可以阅读它。

诀窍是在插件上调用destroy,而不是在每个pageLoad 事件上,而是在请求开始时。像往常一样,asp.net updatepanels 和 jquery 在它们必须一起工作时非常棘手。

做类似的事情

Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(pageBeginRequest);
function pageBeginRequest() {
    $('#fileupload').fileupload();
    $('#fileupload').fileupload('destroy');   
}

将确保插件被销毁,因此它在 pageLoad 上再次焕然一新,避免事件被多次绑定。这就是为什么文件被上传的次数与部分回发发生的次数一样多。

【讨论】: