2

画像アップローダーを使用しています。問題は、画像アップローダーにajaxプログレスバー画像のみが表示され、パーセンテージが表示されないことです。

以下のコード(プログレスバーに関連する)にパーセンテージを実装するにはどうすればよいですか?

jQuery.itemForm.submitFormIfNotImageLoading = function(loadingTime){

    if (jQuery.uploaderPreviewer.loadingImages()) {
      if(loadingTime > $.itemForm.loadingTimeout) {
        var settings = {
            title: $.itemForm.messages.timeoutTitle,
            message: $.itemForm.messages.timeoutMessage,
            buttons: { 'OK': function() { $(this).dialog("close"); } }
        };
        $.globalFunctions.openDialog(settings);
      }
      else {
        loadingTime += $.itemForm.checkingIntervalTime;
        var progressBarValue = $("#progressbar").progressbar('value')
                             + $.itemForm.progressBarInterval;
        $("#progressbar").progressbar('value', progressBarValue);
        var recursiveCall = "$.itemForm.submitFormIfNotImageLoading(" + loadingTime + ")";
        setTimeout(recursiveCall, $.itemForm.checkingIntervalTime);
      }
    }
    else {
      submitForm();
    }
};

function showImageLoadingMessage() {

    var options = {
        title: $.itemForm.messages.savingTitle,
        message: $.itemForm.messages.savingMessage
    };

    $.globalFunctions.openDialog(options);

    $("#progressbar").progressbar({
        value: 0
    });

    var progressBarInterval = $.itemForm.checkingIntervalTime * 100 / $.itemForm.loadingTimeout;
    if (progressBarInterval != Number.NaN) {
        $.itemForm.progressBarInterval = Math.floor(progressBarInterval);
    }
};
4

1 に答える 1

1

実際、通信は持続的接続のないクライアントサーバーであるため、HTML5以外のブラウザーでajaxを使用してパーセンテージを表示することはできません

(互換性を維持したい場合は)必要に応じてかなりうまく機能するフラッシュアップローダーを使用することを検討する必要があります(これは私が見つけた最初のものです)

あるいは、 COMETなどの持続的接続方法を使用することもできますが、とにかく古いブラウザとはほとんど互換性がありません。

あなたが「オープンソース」のフレンドリーな人なら、互換性のないブラウザを使用している人のために、HTML5プログレスバーとプログレスなしの代替手段を使用する方が良いと思います(jQueryプラグインのようなものであれば、とにかくユーザーの大多数がいますHTML5ブラウザを使用する)

于 2012-07-05T14:23:10.220 に答える