15

blueimp jquery-file-upload プラグインのプログレス バーを実装したいのですがprogress、アップロードが開始されて data.loaded == data.total になった直後にコールバックが一度だけ起動されます。

<input data-url="/ads/32/photos" id="image" name="image" type="file" />

$(".upload-btn input").fileupload({
    dataType: "json",
    progress: function (e, data) {
        alert(data.loaded + "/" + data.total);
    },
    done: function (e, data) {
        alert("done");
    }
});

数秒後 (アップロードが完了すると)、done コールバックが発生し、アップロードが成功したことをサーバー ログで確認できます。コールバックも使用しようとすると、同じ動作が発生しprogressallます。

関連しているかどうかはわかりませんが、現在 jquery.fileupload-fp.js ライブラリを含めていません。これを追加すると、アップロード アクティビティがまったく発生しなくなります。

私が間違っていることは何か分かりますか?

4

1 に答える 1

-1

進行状況alertは文字列「100%」で機能していますか? 私はプラグインに慣れていませんがalertprogress関数の式はすべてを型にキャストしますString。したがって、文字列「x/y」が表示されると思います。

いずれにせよ、progress関数を次のように変更する必要があります

alert( data.loaded / data.total ); // no quotes, no +'s

これらの属性 (totalおよびloaded) が正しければ、必要な動作が得られるはずです。

編集:何が起こっているのかを明確にするために、これがあなたの質問に答えた場合:+演算子は、オペランドのデータ型に応じてさまざまな方法で動作します。+2 つの数値を一緒にすると、算術加算演算子として機能します。演算子の 1 つでも文字列場合+、最初に他のオペランドを文字列に変更してから、それらを連結します。最終結果は数値ではなく文字列になります。

var two = "2"; // two is a String data type
alert(two + 2); // Returns "22" as a String

var two = 2;
alert(two + 2); // Returns 4

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition

于 2014-10-22T15:03:56.253 に答える