【问题标题】:Return success on delete in JQuery FileUpload在 JQuery FileUpload 中删除成功返回
【发布时间】:2012-11-27 09:46:47
【问题描述】:

我正在使用blueimp's Jquery file upload plugin。对于添加文件,有许多不同的回调。例如:

$('#fileupload').bind('fileuploaddone', function (e, data) {/* ... */})

我想绑定一个回调,告诉我文件是否已成功删除,但我搜索了文档,但找不到任何看起来像这样做的东西。有人知道我该怎么做吗?

更新: 我应该说上面的代码只返回上传文件。删除文件不返回任何事件。这就是我想尝试并在 bluimp 的源代码中实现的。

回调的源代码在这里https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload-ui.js

【问题讨论】:

  • 下载文件的状态在服务器上是已知的。因此,在您的data 变量(它是您服务器的 json 响应)中,您可以传递任何信息,例如,如果您的文件已成功删除。
  • 但问题是我需要在文件上传源中实现处理程序。不知道该怎么做。
  • 这取决于您从服务器传输的内容(在 datavariable 中:您是否调试过它?)。但是假设你有一些像这样的对象:data : { kind : "error", message : "Deletion failed" },在你的回调函数中你必须测试data.kindif (data.kind === "error") alert(data.message);
  • 我不确定我是否在关注 - 问题是即使我按照您的描述发送数据,也没有回调函数来处理它。也许我的知识有一些差距。您能否在答案中添加更多细节? - 这将非常有帮助。
  • 添加了定义回调函数的源代码。如果我可以更改那里的代码以响应我认为可行的删除操作

标签: javascript jquery file-upload jquery-events


【解决方案1】:

如果有人还在寻找这个,我通过将 jquery.fileupload-ui.js 文件中“destroy”函数中的“removeNode”函数声明更改为:

removeNode = function (d) {
    that._transition(data.context).done(function () {
        $(this).remove();
        that._trigger('destroyed', e, d);
    });
};

然后只需为“fileuploaddestroyed”添加事件,数据将包含服务器响应而不是原始表单数据

【讨论】:

    【解决方案2】:

    总结前面的cmets,回调函数就是处理通过事件fileuploaddone从服务器接收到的数据的函数。因此,您将拥有这样的代码:

    $('#fileupload').bind('fileuploaddone', callbackfunc); 
    
    // Your callback function
    function callbackfunc(e, data) { 
        /* your code, like : if (data.kind === "error") alert(data.message); */ 
    }
    

    但您可以通过匿名函数缩短它:

    $('#fileupload').bind('fileuploaddone', function (e, data) {/* your code, like : if (data.kind === "error") alert(data.message); */})
    

    编辑

    对于删除,回调可以绑定事件fileuploaddestroy(见本页:BlueImp options)。

    【讨论】:

    • 啊,但这就是我想告诉你的,fileuploaddone 仅在上传文件时调用。删除文件时调用 NO EVENT。这就是为什么我说我无法处理删除文件的任何数据。
    • 哦,好吧,我没有正确理解您的问题。对于删除,您应该使用fileuploaddestroy(参见本页底部:BlueImp options,其中有一个名为“UI 版本的附加回调选项”的部分,特别是“销毁”)。
    • 啊,是的!这正是我想要的!不知道我是怎么错过的——不过文档有点到处都是。如果你更新你的答案,我会标记它是正确的。感谢您的所有帮助。
    • fileuploaddestroy 事件甚至在删除请求被调用或发送到服务器之前被调用。所以我认为这里没有成功的删除回调。如果有任何解决方法提到一个例子。
    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 2021-09-29
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多