正在查找表单文件传输完成事件!jquery ajax

正在查找表单文件传输完成事件!jquery ajax,jquery,ajax,forms,file,Jquery,Ajax,Forms,File,我正在使用“PECL uploadprogress”状态进行文件上传,如果用户试图关闭窗口,则使用“beforeunload”警告,该警告在汇总时激活 $('#form').click(function() { $('#upload').submit(); ajaxd(); setInterval("ajaxd()",1000); (...) $(window).bind("beforeunload", function() { /*

我正在使用“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
    });
}
现在我需要在某个地方解开“卸载前”的绑定

$(window).unbind();
。。。但是在哪里呢。ajax({}).done或.complete在这里不起作用,因为函数正在重复。还有,停下来。我需要一个“文件传输完成”事件来解除绑定。我可以用像这样的东西

if $progress_percent > 90 { unbind() }
(当文件传输完成时,表单跟随目标(操作)。页面将关闭。可能在脚本达到100%之前。用户在此卸载时会收到一条警告。这就是我试图通过使用>90而不是==100来避免的。)


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

如果您使用了,当
$\u SESSION[“upload\u progress\u xxx”][“done”]
为真,或者检测到上载错误时,JavaScript事件将被解除绑定。

而不是解除beforeuload的绑定,而是将完成百分比存储在一个gobal变量中,并将其默认为100%,然后当事件发生时,测试百分比是否为您的值,然后返回字符串或不返回任何内容(不要
返回true;
,只需
返回;
)@kevin,我在这里使用ID$(“#表单_提交_按钮”)。我只是想让你明白。如果文件传输完成,表单将跟随目标。页面将关闭。也许,在剧本达到100%之前。在这种情况下,用户会收到一条警告。这就是我试图避免的。