2

スクリプトに jquery を含め、現在、このアップロード進行状況バー スクリプトの jquery バージョンを作成しようとしています: http://www.ultramegatech.com/2008/12/creating-upload-progress-bar-php/

これが私の試みです:

$(document).ready(function () {

    function startProgress(uid) {
        console.log("starting progress");
        setTimeout('getProgress("' + uid + '")', 500);
        //some more stuff
    }

    function getProgress(uid) {
        console.log("getting progress");
        $.ajax({
            type: "GET",
            url: 'upload_getprogress.php?uid=' + uid,
            success: function (msg) {
                progress = msg;
                setTimeout('getProgress("' + uid + '")', 100);
                // do some more stuff
            }

        });
    }

    $('#upload').submit(function () {
        startProgress('<?php echo $uid; ?>');
    });
});

しかし、私はこのエラーが発生しています:

Uncaught ReferenceError: getProgress is not defined

それはどうですか?

関数を の外に置こうとしましたが、document.ready()役に立ちませんでした。getProgress内部の最初に行って定義しましたstartProgressが、関数を認識していないようです。私は何を間違っていますか?

4

5 に答える 5

3

再確認できませんでしたが、送信コールバックのスコープが原因であると推測しています。これらの線に沿って何かを試してください。

$(document).ready(function(){   
    $('#upload').submit(function(){ window.startProgress('<?php echo $uid; ?>'); });
});

var startProgress = function(uid) {
       console.log("starting progress");
       setTimeout('getProgress("' + uid + '")', 500);
       //some more stuff
};

var getProgress = function(uid) {
    console.log("getting progress");
    $.ajax({  type: "GET", 
        url: 'upload_getprogress.php?uid=' + uid, 
        success: function(msg) {   
            progress = msg;
            setTimeout('getProgress("' + uid + '")', 100);
                    // do some more stuff
        }

    });
};

window.startProgress = startProgress;
window.getProgress = getProgress;
于 2013-07-24T10:00:01.107 に答える
1

のような setTimeout 関数を使用すると
setTimeout('getProgress("' + uid + '")',500)

のような setTimeout 関数を使用する場合は、関数getProgressをグローバル スコープに配置する必要がありますsetTimeout( getProgress(uid),500)

jQuery ready 関数内で関数 getProgress を定義できます

于 2013-07-24T10:33:04.387 に答える