0

画像のアップロードに使用している iframe #uploadTarget があります。

function uploadImage(){

    if ($('#imageUploader').val().length > 0){
        $('#uploadingIndicator').show();

        // set form params such that it uploads image
        $('#uploadForm').attr("action", uploadUrl);
        $('#uploadForm').attr("enctype", "multipart/form-data");
        $('#uploadForm').attr("target", 'uploadTarget');

        // submit for image upload
        $('#uploadForm').submit();
        resetFormAttributes();

        //console.log($('#uploadTarget').contents().find('body').text());

    } else {
        resetFormAttributes();
        $('#uploadForm').submit();
    }
}

画像のアップロードが完了すると、iframe 内のページは iframe の外側で doneUploading を呼び出す JavaScript を実行します。

ファイルが大きすぎる、またはエラーが発生して iframe にエラー ページが表示された場合、doneUpload 関数は呼び出されません。

$('#uploadForm').submit() が完了した後にトリガーされるある種のコールバック関数を持つことは可能ですか (その場合、エラー応答のページを読み取ります)?

そうでない場合、iframe 内で返されるエラー応答をどのように読み取ることができますか?

4

1 に答える 1

1

doneUploading()アップロードが成功したときに関数をトリガーするためfailedUploading()、アップロードが失敗したときに関数をトリガーする必要があります。contents()iframe のコンテンツには、jQuery の関数を通じてアクセスできます。

function failedUploading() {
    var data = $('#uploadTarget').contents();
}

編集

loadまたは、フォームを送信した直後に、ワンタイム イベント リスナーを iframe にアタッチすることもできます。

resetFormAttributes();
$('#uploadForm').submit();
$('#uploadTarget').one('load', function() {
    var data = $('#uploadTarget').contents();
});
于 2013-09-17T21:51:09.340 に答える