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()在上传失败的时候触发一个函数。iframe 的内容可以通过 jQuery 的contents()function访问。

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 回答