Javascript 将回调添加到jquery.submit()以从上载读取错误响应
我有一个iframe#uploadTarget,用于图像上传: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
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();
});