2013-03-15 46 views
2

我有这个带有abort()的ajax文件上传表单;功能。可通过单击取消锚触发:使ajax上传abort-able只能在上传进度完成之前

$('#cancel').click(function(){ 
    ajaxFileUpload.abort(); 
    $('#message').html('cancelled'); 
}); 

而且这种定位的是时隐时现的成功函数返回“successfullyUploaded”:

if(response == 'successfullyUploaded') {$('#cancel').hide(); }); 

此时文件上传和为时已晚取消上传。大多数情况下,它工作得很好。但是,如果有人在处理上传的php页面上的文件上传和包含接收成功数据的表单的页面之间的瞬间点击“取消”,它会说“取消”,但实际上上传已完成。所以我想知道是否有某种方法可以检测文件上传的时间,比如95%完成,并且在那个时候隐藏'取消'定位符。这是可能吗?谢谢

+0

是的,它是非常有可能的,但我不会要求它是最好的选择。成功上传和获取数据之间的时间跨度应该在平均200ms以上。我个人不会担心这一点,但如果必须的话,我会发送另一个Ajax请求,当你点击取消按钮,以确保上传尚未完成之前'取消'上传。 – 2013-03-15 22:11:12

+0

我知道这似乎有点微不足道。我只是不喜欢这样的想法,即万一发生这种情况,用户会得到不正确的信息 – user2014429 2013-03-15 22:15:04

+0

我明白了。这是有点难以重现,否则我会深入了解。 – 2013-03-15 22:18:15

回答

1

一旦中止,您可能会向服务器发送第二个AJAX请求,告诉上传已被取消,上传的文件(如果存在)必须被删除。

当您收到第二请求成功应答,你可以设置#message取消

+0

一个有效的解决方案,我会考虑这一点。感谢您的建议。 – user2014429 2013-03-15 23:05:10