次のことについての助けは、ありがたく受け入れられます。
ページにさまざまな数の Ajax ファイルのアップロードがあり、それぞれが独自のフォームに含まれているというシナリオがあります。各フォームの onSubmit アクション中に、PostFile() という別のメソッドを呼び出して、次のようにファイルのアップロードを実行します。
function PostFile(fileInputId, id) {
var formdata = new FormData();
var fileInput = $('#fileinput' + '_' + id)[0];
formdata.append(fileInput.files[0].name, fileInput.files[0]);
formdata.append("Id", id);
//Creating an XMLHttpRequest and sending
var xhr = new XMLHttpRequest();
xhr.open('POST', '/Bookings/UploadArtwork');
xhr.send(formdata);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
if ($.ajax.active == 0) {
NoOtherFilesBeingUploaded();
}
}
};
}
私の問題は、ページ上の他のフォームを介して現在アップロードされている他のファイルがない場合にのみ NoOtherFilesBeingUploaded() 関数を実行したいということです。つまり、進行中の XMLHttpRequest が他にない場合です。
事実上、現在開いている XMLHttpRequests のカウンターが必要です。ただし、XMLHttpRequests イベントに対して ajaxStart() が起動しないため、$.ajax.active は常に 0 であることを発見しました。
誰にもアイデアはありますか?
前もって感謝します
アップデート:
私は XMLHttpRequest を使用しているので、次のように進行状況バーを追加できます。
xhr.upload.addEventListener("progress", function (event) {
if (event.lengthComputable) {
var percentComplete = Math.round(event.loaded * 100 / event.total);
$('#progressNumber_' + id).html(percentComplete.toString() + '% complete');
}
else {
$('#progressNumber_' + id).html('unable to compute');
}
}, false);
これを元の投稿から除外して申し訳ありません。