兼容IE5的文件上传(easyui+jquery)

879 阅读3分钟

最近在来了一个需求,前后端不分离的项目,要求兼容IE5的文件上传


这个需要用到jquery的form插件,所以是需要引入这个form插件,才能用ajaxSubmit这个方法的

<script type="text/javascript" src="<%=appPath%>/jquery-easyui-1.5.5.1/jquery.form.js"></script>


在IE5下,后台返回json数据,浏览器会弹出下载框,

下载的是一个json文件,内容是后端返回回来的数据。

此时前端是没办法进入success回调的

所以需要后端修改返回数据的格式,就可以解决这个问题了。


上传成功的请求头和响应头信息



下面是整个页面代码(jsp页面)

<%@ page language="java" contentType="text/html; charset=GBK" isErrorPage="true"%>
<%    String appPath = request.getContextPath();%>
<html>
<head>
    <title>号码中断管理</title>
    <link rel="stylesheet" type="text/css" href="<%=appPath%>/jquery-easyui-1.5.5.1/themes/gray/easyui.css">
    <link rel="stylesheet" type="text/css" href="<%=appPath%>/jquery-easyui-1.5.5.1/themes/icon.css">
    <script type="text/javascript" src="<%=appPath%>/jquery-easyui-1.5.5.1/jquery.min.js"></script>
    <script type="text/javascript" src="<%=appPath%>/jquery-easyui-1.5.5.1/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="<%=appPath%>/jquery-easyui-1.5.5.1/jquery.form.js"></script>
    <script type="text/javascript" src="<%=appPath%>/jquery-easyui-1.5.5.1/tools.js"></script>
    <script type="text/javascript" src="<%=appPath%>/jquery-easyui-1.5.5.1/locale/easyui-lang-zh_CN.js"></script>
    <style type="text/css"> 
      .ftitle {
           font-size: 14px;
           font-weight: bold; 
           padding: 5px 0;
           margin-bottom: 10px;
           border-bottom: 1px solid #ccc;
      } 
      .fitem label {
            display: inline-block;
            width: 80px;
        }
        label {
            display: block;
            text-align: right;
        }
    </style>
    <script>
        $(function(){
            //日期框输入框初始化
            $('#uploadDateQuery').datebox();
            $('#uploadDateQuery').datebox('setValue', new Date().Format("yyyy-MM-dd"));
            $('#data').datagrid({
                url:'<%=appPath%>/interrupt/query.do?r=' + getRandom(),
                columns:[[
                    {field:'number',title:'电话号码',width: 200},
                    {field:'createTime',title:'导入时间',width:250},
                    {field:'status',title:'中断状态',width:200}
                ]],
                idField:'id',
                singleSelect:false, 
                pagination:true,
                onLoadSuccess: function(data) {  
                if (!data.success) {  
                      alert(data.msg);
                    } 
               }, 
               onLoadError: function() {
                    alert("加载失败"); 
               },
                toolbar:[{ 
                   id:'btn-add',
                    text:'导入',
                    iconCls:'icon-redo', 
                   handler:function(){ 
                       $("#fmUpload").form("clear");
                       $("#uploadDlg").dialog("open").dialog('setTitle', '导入');
                    }
                }]            
         });
        var p = $('#data').datagrid('getPager');
        $(p).pagination({
                onSelectPage:function(pageNumber, pageSize){
                    $('#data').datagrid('loading');
                    $.post("<%=appPath%>/interrupt/query.do?r=" + getRandom(),
                     {page: pageNumber, rows: pageSize,
                            number: $('#numQuery').val(), 
                           createTime: $('#uploadDateQuery').val()}, 
                            function(data){
                                   if (data.success) {
                                        $('#data').datagrid('loadData', data); 
                                   } else { 
                                       alert(data.msg);
                                    } 
                                       $('#data').datagrid('loaded');
                                    },"json");
                        } 
               });
            $("#clearQuery").bind('click', function() {
                $('#fmQuery').form('clear'); 
               $('#uploadDateQuery').datebox('setValue', new Date().Format("yyyy-MM-dd"));
            });
            $("#submitQuery").bind('click', function() {
                var formData = $("#fmQuery").serialize()+"&page=1&rows=10";
                console.log(formData)
                $('#data').datagrid('loading'); 
               $.post("<%=appPath%>/interrupt/query.do?r=" + getRandom(),
                    formData, function(data){
                        if (data.success) { 
                           $('#data').datagrid('loadData', data);
                        } else { 
                           alert(data.msg);
                        }
                        $('#data').datagrid('loaded');
                    },"json");
            });
            $("#uploadBtn").bind('click', function() {  
              //得到上传文件的全路径
                var fileName = $('#uploadFiles').filebox('getValue'); 
               //进行基本校验 
               if (fileName == "") { 
                   $.messager.alert('提示', '请选择上传文件!', 'info'); 
               } else { 
                   //对文件格式进行校验 
                   var d1 = /\.[^\.]+$/.exec(fileName); 
                   if (d1 == ".csv") {
                        $("#uploadBtn").linkbutton('disable');
                        //提交表单
                        $('#fmUpload').ajaxSubmit({//ajax方式提交表单 
                           url: '<%=appPath%>/interrupt/upload.do?r=' + getRandom(),
                            type: 'post', 
                           dataType: 'text', 
                           beforeSubmit: function () {                            },   
                         success: function (data) {
                                try { 
                                   var obj = jQuery.parseJSON(data); 
                               } catch (e) { 
                                   alert(e.name + ": " + e.message);
                                }  
                              var resultInfo = "";    
                            if (obj.success) {
                                    resultInfo = "上传成功" ; 
                               } else {
                                    resultInfo = obj.msg;  
                              }  
                              $.messager.alert('提示', resultInfo, 'info');  
                              $('#uploadDlg').dialog('close'); 
                               $('#data').datagrid('reload',{
                                    number: $('#numQuery').val(),
                                    createTime: $('#uploadDateQuery').val() 
                               });
                                $("#uploadBtn").linkbutton('enable');
                            },
                            error: function(xhr, status, err) { 
                               alert("操作失败: status=" + status + " err=" + err);    // 访问地址失败,或发生异常没有正常返回  
                            clearForm: false,//禁止清楚表单
                            resetForm: false //禁止重置表单
                           });  
                   } else {  
                      $.messager.alert('提示', '请选择csv格式文件!', 'info');
                        $('#uploadFiles').filebox('setValue', '');
                    }
                } 
           });
            $("#cancelUploadBtn").bind('click', function() {
                $('#uploadDlg').dialog('close'); 
               $('#data').datagrid('reload', { 
                   number: $('#numQuery').val(), 
                   createTime: $('#uploadDateQuery').val() 
               }); 
           }); 
       });  
  </script>
</head>
<body class="easyui-layout"><div region="north" title="查询条件" split="true" style="height:100px;">    <div style="margin-top: 10px; margin-left: 10px;">        <form id="fmQuery" method="post" novalidate>            <span>电话号码:</span>            <input class="easyui-validatebox" type="text" name="number" id="numQuery" style="line-height: 26px; border: 1px solid #ccc"></input>            <span>导入日期:</span>            <input class="easyui-validatebox" type="text" name="createTime" id="uploadDateQuery" style="line-height: 26px; border: 1px solid #ccc"></input>            <a id="clearQuery" class="easyui-linkbutton" iconCls="icon-clear">清空</a>            <a id="submitQuery" class="easyui-linkbutton" iconCls="icon-search">查询</a>        </form>    </div></div><div region="center" title="查询列表" split="true" >    <table id="data"></table></div><%--修改配置参数的div--%><div id="uploadDlg" class="easyui-dialog"     style="width: 600px; height: 380px; padding: 10px 20px;left: 250px;top:100px;"     closed="true" buttons="#uploadDlg-buttons">    <div class="ftitle">        导入文件    </div>    <form id="fmUpload" method="post" enctype="multipart/form-data">        <input id="uploadFiles" name="files" class="easyui-filebox" style="width:200px"               data-options="prompt:'请选择文件...',buttonText: '选择文件'">        <a href="javascript:void(0)" class="easyui-linkbutton" id="uploadBtn"           iconcls="icon-redo" plain="true">导入</a>    </form></div><div id="uploadDlg-buttons">    <a href="javascript:void(0)" class="easyui-linkbutton" id="cancelUploadBtn"       iconcls="icon-cancel">取消</a></div></body>