Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用ajax检查下载时间?_Javascript_Html_Ajax_Jquery - Fatal编程技术网

Javascript 用ajax检查下载时间?

Javascript 用ajax检查下载时间?,javascript,html,ajax,jquery,Javascript,Html,Ajax,Jquery,我想下载一个512 kb的文件并检查下载时间。 我使用以下代码,但它只检查网站的响应时间,并不等待整个文件下载。如何检查整个文件下载时间 var start = new Date(); $.ajax ({ url: 'https://www.example.com/512kb', cache: false, success : function() { var total=(new Date() - start) }, er

我想下载一个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) {}   
});

编辑:当我在本地电脑上运行网站时,internet explorer正在等待所有文件的下载,Firefox和chrome则不然。若我把所有的行为都放到服务器上,并没有等待所有的文件。为什么仅在本地端internet explorer的行为是这样的?

看起来您没有对任何事情使用
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) {}   
});

在javascript中无法做到这一点。但您会在这个问题中找到一些解决方法:


编辑:另一个stackoverflow问题有一个更好、更简单的答案:基本上,您将一个指向页面中隐藏iframe的下载链接作为目标,并为此iframe使用onload事件。

您是否尝试过readystate属性?对于许多事情,我正在使用total变量的可能重复。在问题中,我重点讨论了该方法。成功回调是在HTTP GET请求得到响应时执行的,而不是在文件下载完成时执行的。@user1874941在问题中,在
success
回调函数中,您有
var-total=…
,这意味着将创建一个
total
变量以在该函数中使用。创建的此
total
变量将隐藏暴露于
success
回调函数的任何其他
total
变量。可能您只需要从回调函数中删除
var
关键字。@FerCa根据,回调函数
success
的第一个参数是返回的数据。我不明白如果数据没有下载完成,
success
回调函数如何启动。API文档摘录:请求成功时调用的函数。该函数传递了三个参数:从服务器返回的数据,…谢谢,但是如果没有办法测量speedtest网页的带宽的话。我知道他们正在下载文件,并在我尝试时检查时间。他们中的大多数使用flash或java小程序来完成这项工作。这个HTML5网站怎么样?www.bandwidthplace.com我已经编辑了这个问题。也许它能给我关于这个问题的另一个想法……我已经编辑了我的答案,我以前用过这个隐藏的iframe,我已经忘记了。