Javascript 将回调添加到jquery.submit()以从上载读取错误响应

Javascript 将回调添加到jquery.submit()以从上载读取错误响应,javascript,jquery,iframe,Javascript,Jquery,Iframe,我有一个iframe#uploadTarget,用于图像上传: function uploadImage(){ if ($('#imageUploader').val().length > 0){ $('#uploadingIndicator').show(); // set form params such that it uploads image $('#uploadForm').attr("action", uploadU

我有一个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内的页面执行javascript,在iframe外调用doneUploading

如果文件太大或发生错误,并且iframe中显示错误页面,则不会调用doneUpload函数

是否可能有某种回调函数在$('#uploadForm').submit()完成后触发(在这种情况下,我将阅读页面以获取错误响应)


如果没有,我将如何读取iframe内返回的错误响应?

既然上载成功时触发了
doneUploading()
函数,那么上载失败时应该触发
failedUploading()
函数。iframe的内容可以通过jQuery的

编辑 或者,您可以在提交表单后直接将一次性
load
事件侦听器附加到iframe:

resetFormAttributes();
$('#uploadForm').submit();
$('#uploadTarget').one('load', function() {
    var data = $('#uploadTarget').contents();
});

您是否在使用AJAX进行提交?如果是这样,您可以使用AJAX回调函数。否则,我认为没有办法。@Barmar AJAX不能用于图像上载。您可以将加载事件侦听器附加到iframe。我了解到iframe的
load
实现有点挑剔,但回头看,这主要适用于iframe与父文档同时加载的情况,所以我想听众会在这里工作。我编辑了我的答案;谢谢@防盗,第二个很好用,非常感谢!!我无法控制错误页面,因为它是一个外部图像服务,只有当它成功时,我才能调用doneUploading,如果失败,一切都会挂起,就像上传仍然很忙一样$('uploadTarget').one('load',function(){var data=$($('uploadTarget').contents()).attr('title');console.log(data);});
resetFormAttributes();
$('#uploadForm').submit();
$('#uploadTarget').one('load', function() {
    var data = $('#uploadTarget').contents();
});