Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Jquery_Ajax_Content Length - Fatal编程技术网

Javascript 在AJAX响应完成加载之前获取其大小

Javascript 在AJAX响应完成加载之前获取其大小,javascript,jquery,ajax,content-length,Javascript,Jquery,Ajax,Content Length,我使用jQuery通过AJAX从服务器加载数据,这是一个相当正常的用例。诀窍在于,我希望在请求完成之前从请求中获得预期的内容长度;我希望能够在加载数据时显示进度条 有什么办法可以做到这一点吗?我不得不想象有。谢谢 更新:服务器必须做大量的工作才能生成响应,因此我不希望用两个请求来攻击它,这会破坏目的。您可以在ajax调用中使用xhr事件,然后将进度事件连接到该事件,并检查事件。lengthComputable=true,然后你会得到价值,否则你就得不到价值。您可以签出以下代码 $.ajax({

我使用jQuery通过AJAX从服务器加载数据,这是一个相当正常的用例。诀窍在于,我希望在请求完成之前从请求中获得预期的内容长度;我希望能够在加载数据时显示进度条

有什么办法可以做到这一点吗?我不得不想象有。谢谢


更新:服务器必须做大量的工作才能生成响应,因此我不希望用两个请求来攻击它,这会破坏目的。

您可以在
ajax
调用中使用
xhr
事件,然后将
进度事件
连接到该事件,并检查
事件。lengthComputable=true
,然后你会得到价值,否则你就得不到价值。您可以签出以下代码

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: URL,
    cache: false,
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseText);
        alert(thrownError);
    },
    xhr: function () {
        var xhr = new window.XMLHttpRequest();
        //Download progress
        xhr.addEventListener("progress", function (evt) {
            console.log(evt.lengthComputable);
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                console.log(percentComplete );
            }
        }, false);
        return xhr;
    },
    beforeSend: function () {
      // before send
    },
    complete: function () {
       // complete.
    },
    success: function (json) {
       // success;
    }
});

您可以在
ajax
调用中使用
xhr
事件,然后将
progress event
连接到该事件,并检查
event.lengthComputeable=true
,然后您将获得值,否则将无法获得值。您可以签出以下代码

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: URL,
    cache: false,
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseText);
        alert(thrownError);
    },
    xhr: function () {
        var xhr = new window.XMLHttpRequest();
        //Download progress
        xhr.addEventListener("progress", function (evt) {
            console.log(evt.lengthComputable);
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                console.log(percentComplete );
            }
        }, false);
        return xhr;
    },
    beforeSend: function () {
      // before send
    },
    complete: function () {
       // complete.
    },
    success: function (json) {
       // success;
    }
});

您可以在
ajax
调用中使用
xhr
事件,然后将
progress event
连接到该事件,并检查
event.lengthComputeable=true
,然后您将获得值,否则将无法获得值。您可以签出以下代码

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: URL,
    cache: false,
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseText);
        alert(thrownError);
    },
    xhr: function () {
        var xhr = new window.XMLHttpRequest();
        //Download progress
        xhr.addEventListener("progress", function (evt) {
            console.log(evt.lengthComputable);
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                console.log(percentComplete );
            }
        }, false);
        return xhr;
    },
    beforeSend: function () {
      // before send
    },
    complete: function () {
       // complete.
    },
    success: function (json) {
       // success;
    }
});

您可以在
ajax
调用中使用
xhr
事件,然后将
progress event
连接到该事件,并检查
event.lengthComputeable=true
,然后您将获得值,否则将无法获得值。您可以签出以下代码

$.ajax({
    type: 'POST',
    dataType: 'json',
    url: URL,
    cache: false,
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseText);
        alert(thrownError);
    },
    xhr: function () {
        var xhr = new window.XMLHttpRequest();
        //Download progress
        xhr.addEventListener("progress", function (evt) {
            console.log(evt.lengthComputable);
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total;
                console.log(percentComplete );
            }
        }, false);
        return xhr;
    },
    beforeSend: function () {
      // before send
    },
    complete: function () {
       // complete.
    },
    success: function (json) {
       // success;
    }
});

使用
HEAD
requestSearch
lengthComputable
,正如@StephenThomas所指出的,尝试
HEAD
request;解析
内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时,页面只需15秒就可以生成(因此需要一个进度条哈哈)。使用
HEAD
requestSearch
lengthComputable
,正如@StephenThomas所指出的,尝试
HEAD
request;解析
内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时,页面只需15秒就可以生成(因此需要一个进度条哈哈)。使用
HEAD
requestSearch
lengthComputable
,正如@StephenThomas所指出的,尝试
HEAD
request;解析
内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时,页面只需15秒就可以生成(因此需要一个进度条哈哈)。使用
HEAD
requestSearch
lengthComputable
,正如@StephenThomas所指出的,尝试
HEAD
request;解析
内容长度
标题的响应,如果存在?我应该指定这个,服务器必须做大量的工作来生成响应,它无论如何都不是一个静态页面。我不想打两次。有时页面可能需要15秒才能生成(因此需要一个进度条哈哈)。