寻找表单文件传输完成事件! jquery ajax

时间:2013-07-11 14:12:12

标签: jquery ajax forms file

我正在使用“PECL uploadprogress”状态进行文件上传,如果用户尝试关闭窗口,则在使用“beforeunload”警告时,会在峰值时激活。

$('#form').click(function() {
    $('#upload').submit();
    ajaxd();    
    setInterval("ajaxd()",1000);

    (...)

    $(window).bind("beforeunload", function() {
    /*  return true || confirm("Do you really want to close?"); */
        return confirm("Do you really want to close?"); 
    }); 
}

function ajaxd() {
$.ajax({
    dataType: "json",
    (...) // get and workaround progress for upload-bar
    });
}

现在我需要UNBIND“beforeunload”某处......

$(window).unbind();

......但是在哪里? $ .ajax({})。done或.complete在这里不起作用,因为函数正在重复。另外.ajaxStop。我需要在“文件传输完成”中进行一个事件,以解除绑定。我可以使用像

这样的东西
if $progress_percent > 90 { unbind() }

(当文件传输完成后,表单将跟随目标(操作)。页面将关闭。可能在脚本获得100%之前。用户在此卸载时收到警告。这是我试图通过使用避免的> 90而不是== 100。)

但我不喜欢这样。有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您使用过PHP sessions,那么当$_SESSION["upload_progress_xxx"]["done"]为真或检测到上传错误时,JavaScript事件就会被解除绑定。