用ajax检查下载时间? [关闭]

Posted

技术标签:

【中文标题】用ajax检查下载时间? [关闭]【英文标题】:Check download time with ajax? [closed] 【发布时间】:2013-01-09 08:40:14 【问题描述】:

我想下载一个 512 kb 的文件并检查下载时间。 我使用以下代码,但它只检查网站的响应时间,而不是等到整个文件下载完毕。如何查看整个文件的下载时间?

var start = new Date();  
$.ajax (
    url: 'https://www.example.com/512kb',
    cache: false,
    success : function()
    
        var total=(new Date() - start)  
    ,
    error : function(jqxhr, status, ex)    
);

编辑:当我在本地 PC 上运行网站时,Internet Explorer 正在等待所有文件下载完毕,而 Firefox 和 chrome 则没有。如果我把所有行为都放到服务器上,而不是等待所有文件。为什么只是在本地 Internet Explorer 的行为是这样的?

【问题讨论】:

您是否尝试过使用 readystate 属性?? Browser event when downloaded file is saved to disk的可能重复 【参考方案1】:

您似乎没有将total 变量用于任何事情。因为它是在success回调函数中定义的,所以它只存在于该函数中,因此在函数返回时会丢失。

以下代码显示了一个警告框,其中包含完成 ajax 调用所需的时间和检索到的数据的长度:

var start = new Date();
var total;
$.ajax (
    url: 'http://fiddle.jshell.net/',
    cache: false,
    success : function(data)
    
        total=(new Date() - start);
        alert('total: ' + total + ' len: ' + data.length);
    ,
    error : function(jqxhr, status, ex)    
);

http://jsfiddle.net/WkKE2/2/

【讨论】:

我在很多事情上都使用了总变量。在这个问题上,我专注于方法。 成功回调是在HTTP GET请求响应时执行,而不是在文件下载完成时执行。 @user1874941 在问题中,在success 回调函数中有var total = ...,这意味着创建了一个total 变量以在该函数中使用。创建的这个total 变量将隐藏任何其他暴露给success 回调函数的total 变量。可能你只需要从你的回调函数中删除var关键字。 @FerCa 根据jQuery API documentation,success回调函数的第一个参数是返回的数据。我不明白如果数据没有完成下载,success 回调函数将如何触发。 API 文档摘录:请求成功时调用的函数。该函数获得三个参数:从服务器返回的数据,...【参考方案2】:

javascript 中没有办法做到这一点。但是您会在这个 *** 问题中找到一些解决方法:Browser event when downloaded file is saved to disk

编辑:另一个 *** 问题的答案是更好和更简单的方法:detecting when the "File download" popup is closed,基本上您将下载链接定位到页面中隐藏的 iframe 并为此 iframe 使用 onload 事件。

【讨论】:

谢谢,但如果速度测试网页无法测量带宽。我知道他们正在下载文件并在我尝试时检查时间。 他们中的大多数使用 Flash 或 Java 小程序来执行此操作。 这个带有 html5 的网站怎么样? www.bandwidthplace.com 我已经编辑了这个问题。也许它可以对这个问题提出另一个想法...... 我已经编辑了我的答案,我过去使用过这种隐藏的 iframe 方法,我忘记了。

以上是关于用ajax检查下载时间? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中打开异步套接字

检查用户登录的ajax页面是不是改变

如何使用php、html及消息队列实现订单超时自动关闭订单

AJAX + PHP + 下载 mPDF 生成文件

如何检查代码库是用哪个版本的 Python 编写的? [关闭]

学习aiax(javascript)--页面无刷新用ajax检查用户名是否已注册(POST方式)