iframe上传文件默认异步,但是我需要同步上传,所以有没有办法在iframe上传完毕时执行下步代码
以下是代码:
$(function(){
var curTime;
$("#launchBtn").click(function(){
$("#loadingbg").show();
curTime = new Date().getTime();
tabss();
for(var j=0;j if(tab[j].find(".limit").find(".limitInput").attr("src")=="../../../images/checked2.png"){
// 这里清空隐藏了的数据
var inputId1=tab[j].find(".limit").find(".notManualUpload").find("p").find(".formId").text();
var isSuccess = excel(tab[j].find(".limit").find(".roleName").text(),inputId1);
console.log(isSuccess)
if(!isSuccess){
if($(".posterInput").attr("src")=="../../../images/checked2.png"){
if($("#previewImgInput").val()==""){
$.messager.alert('提示消息','请选择海报!','info');
}else{
images();
};
}else{
saveActivity("");
};
return;
};
};
};
if($(".posterInput").attr("src")=="../../../images/checked2.png"){
if($("#previewImgInput").val()==""){
$.messager.alert('提示消息','请选择海报!','info');
}else{
images();
};
}else{
saveActivity("");
};
});
function excel(roleName,inputId) {
var isSuccess = false;
var userId=$.cookie("userId");
var para={"userId":userId,"roleName":roleName,"version":curTime};
para=JSON.stringify(para);
var aes=AESEncrypt(para);
var $inputId=$("#RoleInformationTab1 input[name=file"+inputId+"]");
$inputId.upload({
// async:false,
url:http+'/web/upload/excel/activityExcelUploadService',
params:{para:aes},
dataType: 'json',
onComplate: function (data) {
if(data.code==200){
var dat=AESDecrypt(data.data);
dat=JSON.parse(dat);
if(dat.msgBox.errMsg==""){
isSuccess = true;
console.log(isSuccess)
}else{
$.messager.alert('提示消息','<span class="tishiTXT">'+dat.msgBox.errMsg+'</span>','info');
};
}else{
$("#loadingbg").hide();
$.messager.alert('提示消息','<span class="tishiTXT">'+data.message+'</span>','info');
};
}
});
$inputId.upload("ajaxSubmit");
console.log(isSuccess)
return isSuccess;
};
function saveActivity(obj){
var posterUrl;
if($(".posterInput").attr("src")=="../../../images/checked2.png"){
posterUrl=obj;
}else if($(".posterInput").attr("src")=="../../../images/checked1.png"){
posterUrl="";
};
var schoolId=$.cookie("schoolId");
var userId=$.cookie("userId");
var para={"activityBaseInfo":{"actBeginTime":$(".beginTime").val(),"actEndTime":$(".endTime").val(),"actHostId":$("#SponsorSelect").val(),"actManager":$(".personInCharge").val(),"actManagerTel":$(".personInChargeTel").val(),"activityDesc":$("#actDetails").val(),"activityLevel":$("#activeLevelSelect").val(),"activityName":$(".actName").val(),"activityType":$("#activityType").val(),"addressDetail":$(".activeSiteInput").val(),"addressId":$("#activeSiteSelect").val(),"coOrganizer":$(".assist").val(),"crtUserId":userId,"posterUrl":posterUrl,"schoolId":schoolId,"sponsor":$(".sponsorInput").val(),"termId":20152},"activityRoleList":activityRoleList,"version": curTime};
para=JSON.stringify(para);
var aes=AESEncrypt(para);
$.ajax({
async:false,
url:http+"/web/service/activityService/saveActivity",
type:"POST",
dataType: 'json',
data:{para:aes},
success:function(data){
$("#loadingbg").hide();
if(data.code==200){
$.messager.alert('提示消息','<span class="tishiTXT">活动发起成功,请到我的活动查看!</span>','info');
}else{
$("#loadingbg").hide();
$.messager.alert('提示消息','<span class="tishiTXT">'+data.message+'</span>','info');
};
},
error:function(data){
$("#loadingbg").hide();
$.messager.alert('提示消息','<span class="tishiTXT">ERROR:网络错误!</span>','info');
}
});
};
function images() {
var userId=$.cookie("userId");
var para={"userId":userId};
para=JSON.stringify(para);
var aes=AESEncrypt(para);
$("input[name=imagesFile]").upload({
async:false,
url:http+'/web/upload/image/activityPosterImageUploadService',
params:{para:aes},
dataType: 'json',
onComplate: function (data) {
if(data.code==200){
var dat=AESDecrypt(data.data);
dat=JSON.parse(dat);
saveActivity(dat.path);
}else{
$("#loadingbg").hide();
$.messager.alert('提示消息','<span class="tishiTXT">'+data.message+'</span>','info');
};
}
});
$("input[name=imagesFile]").upload("ajaxSubmit")
};
一下是上传组件代码:
/*******************************************************************************
@version 1.5 (2016-05-09) 加入h5上传文件
*******************************************************************************/
(function ($) {
var frameCount = 0;
var formName = "";
var iframeObj = null;
var state = {};
//var fileHtml = "";
var colfile = null;
//清空值
function clean(target) {
var file = $(target);
var col = file.clone(true).val("");
file.after(col);
file.remove();
//关键说明
//先得到当前的对象和参数,接着进行克隆(同时克隆事件)
//将克隆好的副本放在原先的之后,按照顺序逐个删除,最后初始化克隆的副本
};
function h5Submit(target) {
var options = state.options;
var fileObj = target[0].files[0];
var fd = new FormData();//h5对象
//附加参数
for (key in options.params) {
fd.append(key, options.params[key])
}
var fileName = target.attr('name');
if (fileName == ''
|| fileName == undefined) {
fileName = 'file';
}
fd.append(fileName, fileObj);
//异步上传
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function (evt) {
if (evt.lengthComputable) {
var percentComplete = Math.round(evt.loaded * 100 / evt.total);
console.log(percentComplete + "%");
if (options.onProgress) {
options.onProgress(evt);
}
}
}, false);
xhr.addEventListener("load", function (evt) {
if ('json' == options.dataType) {
var d = window.eval('(' + evt.target.responseText + ')');
options.onComplate(d);
} else {
options.onComplate(evt.target.responseText);
}
}, false);
xhr.addEventListener("error", function () {
console.log("error");
}, false);
xhr.open("POST", options.url,false);
xhr.send(fd);
}
function ajaxSubmit(target) {
var options = state.options;
if (options.url == '' || options.url == null) {
alert("无上传地址");
return;
}
if ($(target).val() == '' || $(target).val() == null) {
alert("请选择文件");
$("#loadingbg").hide();
return;
}
var canSend = options.onSend($(target), $(target).val());
if (!canSend) {
return;
}
/*判断是否可以用h5*/
if (window.FormData) {
//h5
console.log('h5Submit');
h5Submit(target);
} else {
/**/
if (iframeObj == null) {
var frameName = 'upload_frame_' + (frameCount++);
var iframe = $('').attr('name', frameName);
formName = 'form_' + frameName;
var form = $('
最后写成了递归函数。
问题看得不太明白,没有具体代码不知道写什么代码,不过应该是使用回调函数吧。
用jquery.form.js,可以配置回调函数,你这个写了一堆,api文档也没有,还得自己研究代码。。