次のコードを使用してファイルをサーブレットにアップロードしようとしています:
var fd = new FormData();
fd.append("file", document.getElementById('fileToUpload').files[0]);
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", uploadProgress, false);
xhr.upload.addEventListener("load", transferComplete, false);
xhr.addEventListener("error", onError, false);
xhr.addEventListener("abort", onUploadCanceled, false);
xhr.open("POST", urlManager.getUploadHandlerUrl());
xhr.send(fd);
問題は chrome (Firefox で完全に動作) のみにあり、リソースの読み込みに失敗し、問題は一貫していません。1〜2回アップロードすると、叫び声が上がります。これがエラーの場合、サーバーへの呼び出しすら行いません。
この質問のサンプルからjqueryを使用してみました。しかし、何の利益もありません。
このようなことがどうして起こるのか、私には理解できませんでした。リードに感謝します、ありがとう。
編集: XHR をラップし、別のSO answerで説明されているように明示的に非同期に設定すると、少なくとも 3 ~ 4 回のアップロードで機能し、叫び始めます (以前より少し良くなりました)。本当に効果があったのか疑問です。
状態の変化が発生すると、準備完了状態とステータスをログに記録します。readyState は 1 から 4 にジャンプするだけで、ステータスは 0 のままです。