フォーム内でPluploadファイルアップローダーを使用しています。フォームが送信されたとき、つまり[送信]ボタンがクリックされたときに、最初にファイルのアップロードが行われ、次にフォームが送信されるようにカスタマイズしたいと思います。
私の知る限り、これは間違っているかもしれませんが、この呼び出しuploader.start()
は非同期関数呼び出しのようです。そのため、現時点では、ファイルがアップロードされる前にアップロードが開始され、フォームが送信されます。問題は、この関数呼び出しを制御できないことです。
最近、jQuery 1.5の新しいリリースと新しい遅延オブジェクトについて読みましたが、これはこの問題の解決に役立つ可能性があるようです。非同期関数呼び出しがその作業を終了するのを待って、呼び出し後にコードの実行を続行する方法はありますか?だから私は次の擬似コードのようなものを探しています...
var uploader = $('#plupload_container').pluploadQueue();
$('#submitButton').click(function() {
// if there are files to be uploaded, do it
if (uploader.files.length > 0) {
// make the call and wait for the uploader to finish
uploader.start();
while ( the uploading is not done ) {
wait for the uploader to finish
}
// continue with submission
}
});
終了を「待機」する方法はありますかuploader.start()
。基本的に、クリックイベントハンドラーを一時停止して、すべてのファイルを最初にアップロードしてから、残りのクリックイベントハンドラーの実行を終了できるようにします。次のことを試しましたが、ファイルのアップロードが完了する前に「done」が出力されます...
$.when(uploader.start()).then(function () {
console.log("done")
});
もう1つの有用な情報... uploader
「UploadProgress」や「UploadComplete」などの特定のイベントをこのオブジェクトインスタンスにバインドできます。たとえば、Deferred Objectを使用して、「UploadComplete」イベントが発生したときにキャッチできますか?これを行うためのAJAX-yの方法はありますか?
ありがとう。