0

何らかの理由で、ファイル アップロード用のスクリプトが正しく機能せず、その理由がまったくわかりません :? スクリプトはファイルを送信できますが、進行状況や状態の変化を追跡できません。デバッグのために不要なビットをコメントアウトしようとしましたが、それでも機能しません。

誰かが私の間違いを指摘してくれたら、永遠に感謝し、バーチャル クッキーを差し上げます

$('#submit').click(function(e){
            e.preventDefault();
            $('#progressContainer').slideDown(10);
            var f = document.getElementById('file'),
                pb = document.getElementById('pb'),
                pt = document.getElementById('pt');

            app.uploader({
                files:f,
                progressBar:pb,
                progressText:pt,
                processor:'scripts/php/upload.php',

                finished: function(){
                    $('#pt').html("Upload complete");
                },
                error: function(){
                    $('#pt').html("Upload Error, please try again");
                }
            });
        });

var app = app || {};

(function(o){
    "use strict"

    var ajax, getFormData, setProgress;

    ajax = function(data){
        var xmlhttp = new XMLHttpRequest(), uploaded;
        xmlhttp.addEventListener('readystatechange', function(){
            if(this.readystate === 4){
                if(this.status === 200){
                    //uploaded = JSON.parse(this.response);
                    //if(typeof o.options.finished === 'function'){
                        o.options.finished();
                    //}
                } else {
                    //if(typeof o.options.error === 'function'){
                        o.options.error();
                    //} 
                }   
            }
        });
        xmlhttp.upload.addEventListener('progress', function(event){
            var percent;
            //if(event.lengthComputable === true){
                percent = math.round(event.loaded / event.total * 100);
                setProgress(percent);
                alert(percent)
            //}
        });
        xmlhttp.open('POST', o.options.processor);
        xmlhttp.send(data);
    }
    getFormData = function(src){
        var data = new FormData(), i;
        for(i=0;i<src.length;i++){
            data.append('file[]',src[i]);
        }
        data.append('formSent',true);
        return data;
    }
    setProgress = function(val){
        $('#pb').animate({width:val+"%"},10);
        $('#pt').html(val+"%");
    }

    o.uploader = function(opt){
        o.options = opt;
        if(o.options.files !== undefined){
            ajax(getFormData(o.options.files.files));
        }
    }
}(app));
4

3 に答える 3

0

「Math.round()」の代わりに「math.round()」を使用しました。非常に単純なエラーですが、残りのスクリプトの実行が停止していました。常にエラー コンソールをチェックするようにアドバイスしてくれた Marvin Medeiros に感謝します。

var app = app || {};

(function(o){
    "use strict"

    var ajax, getFormData, setProgress;

    ajax = function(data){
        var xmlhttp = new XMLHttpRequest(), uploaded;
        xmlhttp.addEventListener('onreadystatechange', function(){
            if(xmlhttp.readystate === 4){
                if(xmlhttp.status === 200){
                    uploaded = JSON.parse(this.response);
                    if(typeof o.options.finished === 'function'){
                    o.options.finished();
                    }
                } else {
                    if(typeof o.options.error === 'function'){
                    o.options.error();
                    } 
                }   
            }
        });
        xmlhttp.upload.addEventListener('progress', function(event){
            var percent;
            if(event.lengthComputable === true){
                percent = Math.round(event.loaded / event.total * 100);
                setProgress(percent);
            }
        });
        xmlhttp.open('POST', o.options.processor);
        xmlhttp.send(data);
    }
    getFormData = function(src){
        var data = new FormData(), i;
        for(i=0;i<src.length;i++){
            data.append('file[]',src[i]);
        }
        data.append('formSent',true);
        return data;
    }
    setProgress = function(val){
        $('#pb').animate({width:val+"%"},10);
        $('#pt').html(val+"%");
    }

    o.uploader = function(opt){
        o.options = opt;
        if(o.options.files !== undefined){
            ajax(getFormData(o.options.files.files));
        }
    }
}(app));
于 2016-04-08T19:45:12.167 に答える