Ajax Firefox仅在*下载*完成后触发XMLHttpRequest上载加载和加载结束事件

Ajax Firefox仅在*下载*完成后触发XMLHttpRequest上载加载和加载结束事件,ajax,firefox,file-upload,xmlhttprequest-level2,Ajax,Firefox,File Upload,Xmlhttprequest Level2,还有谁能证实这一点,还是我做错了什么 在Firefox中,XMLHttpRequest上载事件load和loadend仅在下载完成时触发,而不是在上载完成时触发。此外,在上传结束时不会触发progress事件 请参见此示例: 我相信Chrome的行为是正确的,进度条一直到100%,然后启动load和loadend事件,然后在脚本结束后发布结果。在Firefox中,load和loadend事件只有在脚本完成后才会触发。显然,这些事件是在下载开始时触发的,而不是在上传完成时触发的。这是一个已知的问题

还有谁能证实这一点,还是我做错了什么

在Firefox中,XMLHttpRequest上载事件load和loadend仅在下载完成时触发,而不是在上载完成时触发。此外,在上传结束时不会触发progress事件

请参见此示例:


我相信Chrome的行为是正确的,进度条一直到100%,然后启动load和loadend事件,然后在脚本结束后发布结果。在Firefox中,load和loadend事件只有在脚本完成后才会触发。

显然,这些事件是在下载开始时触发的,而不是在上传完成时触发的。这是一个已知的问题,在这里讨论:

Firefox开发者认为,在下载开始之前,没有办法知道上传已经完成,因为它可能仍然被缓冲在某个地方(在某些情况下可能需要重新发送)

更新

解决方案是让您的第二个页面尽快开始返回输出,例如在PHP中使用:

ob_implicit_flush(true);
for ($i = 0; $i < ob_get_level(); $i++)
  ob_end_clean();
echo ' ';
ob\u隐式\u刷新(true);
对于($i=0;$i