不当小菜鸟 2016-07-05 08:30 采纳率: 100%
浏览 1343
已采纳

iframe上传文件时 ,如何在文件上传完毕时执行下步代码

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")
};




    一下是上传组件代码:


    /*******************************************************************************
  • 异步上传文件,兼容IE8,火狐和谷歌可用,如果可以使用h5则使用h5
  • 实现单个多次上传不刷新
  • @author 柳伟伟 702295399@qq.com
  • @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 = $('

    ').attr('name', formName);
    form.attr("target", frameName).attr('action', options.url);
    //
    var fileHtml = $(target).prop("outerHTML");
    colfile = $(target).clone(true);
    $(target).replaceWith(colfile);
    var formHtml = "";
    // form中增加数据域
    for (key in options.params) {
    formHtml += '';
    }
    form.append(formHtml);
    form.append(target);
    iframe.appendTo("body");
    form.appendTo("body");
    iframeObj = iframe;
    }
    //禁用
    $(colfile).attr("disabled", "disabled");
    var form = $("form[name=" + formName + "]");
    //加载事件
    iframeObj.bind("load", function (e) {
    var contents = $(this).contents().get(0);
    var data = $(contents).find('body').text();
    if ('json' == options.dataType) {
    try {
    data = window.eval('(' + data + ')');
    console.log(data)
    }
    catch (Eobject) {
    console.log('返回的json数据错误');
    console.log(Eobject);
    data = null;
    }
    }
    options.onComplate(data);
    iframeObj.remove();
    form.remove();
    iframeObj = null;
    //启用
    $(colfile).removeAttr("disabled");
    });
    try {
    form.submit();
    } catch (Eobject) {
    console.log(Eobject);
    }
    }
    };
    //构造
    $.fn.upload = function (options) {
    if (typeof options == "string") {
    return $.fn.upload.methodsoptions;
    }
    options = options || {};
    state = $.data(this, "upload");
    if (state)
    $.extend(state.options, options);
    else {
    state = $.data(this, "upload", {
    options: $.extend({}, $.fn.upload.defaults, options)
    });
    }
    };
    //方法
    $.fn.upload.methods = {
    clean: function (jq) {
    return jq.each(function () {
    clean(jq);
    });
    },
    ajaxSubmit: function (jq) {
    return jq.each(function () {
    ajaxSubmit(jq);
    });
    },
    getFileVal: function (jq) {
    return jq.val()
    }
    };
    //默认项
    $.fn.upload.defaults = $.extend({}, {
    async:false,
    url: '',
    dataType: 'json',
    params: {},
    onSend: function (obj, str) { return true; },
    onComplate: function (e) {},
    onProgress: function (e) {}
    });
    })(jQuery);
  • 写回答

3条回答 默认 最新

  • 不当小菜鸟 2016-07-07 08:19
    关注

    最后写成了递归函数。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)