You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何先收集Excel多Sheet数据再通过AJAX统一提交至服务器

解决方案

你只需要把AJAX请求从forEach循环内移到循环结束后,并确保数据收集逻辑正确即可。以下是修正后的代码及关键说明:

var ExcelToJSON = function () {
    this.parseExcel = function (file) {
        var reader = new FileReader();
        reader.onload = function (e) {
            var data = e.target.result;
            var workbook = XLSX.read(data, {
                type: 'binary'
            });
            var dataArray = [];
            
            // 遍历所有Sheet,统一收集数据到数组
            workbook.SheetNames.forEach(function (sheetName) {
                var XL_row_object = XLSX.utils.sheet_to_row_object_array(workbook.Sheets[sheetName]);
                // 直接推入解析后的对象数组,避免重复序列化
                dataArray.push(XL_row_object);
                // 若服务器端要求接收字符串数组,替换为下面这行:
                // dataArray.push(JSON.stringify(XL_row_object));
            });
            
            // 所有Sheet数据收集完成后,发起单次AJAX请求
            $.ajax({
                url: "test2.aspx/InsertExcelGeo",
                type: "post",
                data: JSON.stringify({ dataArray: dataArray }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (_data) {
                    alert(_data.d);
                },
                error: function(xhr, status, error) {
                    // 新增错误处理,方便调试请求失败原因
                    console.error("提交失败:", error);
                    alert("数据提交失败,请查看控制台日志");
                }
            });
        };
        reader.onerror = function (ex) {
            console.log(ex);
        };
        reader.readAsBinaryString(file);
    };
};

关键修改点

  1. AJAX请求位置调整:将请求代码从循环内移至forEach结束后,确保所有Sheet数据都已存入dataArray再提交。
  2. 优化数据序列化逻辑:移除循环内的JSON.stringify,直接推入解析后的对象数组,减少不必要的序列化操作。如果你的服务器端原本依赖字符串格式的数组,只需恢复dataArray.push(JSON.stringify(XL_row_object))即可。
  3. 增加错误处理:添加error回调,便于排查请求失败的问题(比如服务器参数格式不匹配、网络异常等)。

同时需要确认服务器端的InsertExcelGeo方法已适配接收多Sheet数据的数组参数,确保参数结构和类型与前端提交的一致。

内容的提问来源于stack exchange,提问作者hey hej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 20:40:27