Javascript AJAX上传与Firefox不兼容

时间:2014-04-11 09:44:12

标签: javascript ajax firefox xmlhttprequest

我为我的网站使用AJAX上传,而Javascript是选择(不是jQuery)。 但我提出的并不适用于Firefox。这是XMLHttpRequest代码块:

    var xhr = new XMLHttpRequest();

    xhr.open("POST", "upload.php");

    xhr.onprogress = function(event){
        if(event.lengthComputable)
        {
            console.log(event.loaded);
        }
    };

    xhr.setRequestHeader("Cache-Control", "no-cache");

    xhr.send(formData);

并注意xhr.onprogress事件。

或者,我也使用以下代码进行处理:

xhr.upload.addEventListener("progress", function(){
// do something
}, false);

可是:

对于xhr.onprogress的第一个解决方案,它有一个问题:

它只显示上传完成后event.loaded的数量。由于上载已完全加载文件,因此该数量与文件大小相同。 它适用于FF和chrome,但我不希望它只是在进度到达结束后抛出一个值。

第二个解决方案很好,并且工作正常,但它在Firefox中无法正常工作。但是在firefox中,没有抛出任何错误,并且正如我测试的那样,progressEvent根本没有被触发。

chrome和Firefox都是最新版本。

1 个答案:

答案 0 :(得分:1)

我认为问题是你在onprogress之后添加了open()听众,应该在之前完成

var xhr = new XMLHttpRequest();
xhr.onprogress = function (event) {
    if (event.lengthComputable) {
        console.log(event.loaded);
    }
};

xhr.open("POST", "upload.php");

或者:

var xhr = new XMLHttpRequest();
xhr.addEventListener("progress", function (event) {
    if (event.lengthComputable) {
        console.log(event.loaded);
    }
}, false);

xhr.open("POST", "upload.php");