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

MVC应用在Chrome/Edge/Firefox中保存数据至DB失败求助

MVC应用跨浏览器保存失败排查(IE正常,Chrome/Edge/Firefox报错)

添加FinalPartiallySave函数后,控制台出现未捕获错误,相同代码在IE中可正常保存数据到数据库,但Chrome、Edge、Firefox中完全无法运行,数据无法存入。已排查Ajax和async相关配置,未解决问题。

以下为涉及的函数代码:

function FinalPartiallySave() {

    var separator = ";";
    var strPartiallyRows = "";

    var Error = "";

    var strSchemesRows = "";

    // New Schemes
    jQuery(".damage_new_scheme_row").each(function () {
        var SchemeName = $(this).find('.new_scheme_name').val();
        var Scheme = $(this).attr('scheme_id');
        var SchemeDenomination = $(this).find('.new_scheme_denomination').val();
        var SchemeQty = $(this).find('.new_scheme_qty').val();
        var Mapid = $(this).attr("mapid");


        Scheme = (Scheme == undefined) ? "" : Scheme;
        SchemeDenomination = (SchemeDenomination == undefined) ? "" : SchemeDenomination;
        SchemeQty = (SchemeQty == undefined) ? "" : SchemeQty;
        Mapid = (Mapid == undefined) ? "" : Mapid;

        if (SchemeQty == "0" || SchemeQty == "") {
            Error += "Please enter Valid Qty for " + SchemeName + " Scheme \n";
        }
        else {
            strSchemesRows = strSchemesRows +
                            "" + separator +
                            "" + separator +
                            "" + separator +
                            SchemeDenomination + separator +
                            SchemeQty + separator +
                            Mapid + separator +
                            Scheme + ",";
        }
    });


    var dScheme = "";
    var ddl = document.getElementById("ContentPlaceHolder1_dc1_ddlscheme");
    for (var index = 0; index < ddl.all.length; index++) {
        if (ddl.all[index].selected) {
            dScheme = ddl.all[index].text;
            break;
        }
    }
    var dSchemeId = jQuery('#hd_scheme_id').val();

    var dSchemeDenomination = jQuery(".damage_new_scheme_row1").find('.new_scheme_denomination').val();
    var dSchemeQty = jQuery(".damage_new_scheme_row1").find('.new_scheme_qty').val();
    var dMapid = "0";

    dScheme = (dScheme == undefined) ? "Select" : dScheme;
    dSchemeDenomination = (dSchemeDenomination == undefined) ? "" : dSchemeDenomination;
    dSchemeQty = (dSchemeQty == undefined) ? "" : dSchemeQty;
    dMapid = (dMapid == undefined) ? "" : dMapid;

    if (dScheme == "Select" && (dSchemeDenomination != "0" || dSchemeQty != "")) {
        Error += "Please enter New Scheme Name\n";
    }
    if (dSchemeId == "-1" && (dSchemeDenomination != "0" || dSchemeQty != "")) {
        Error += "Please enter Valid New Scheme Name\n";
    }
    if (dSchemeDenomination == "0" && (dScheme != "Select" || dSchemeQty != "")) {
        Error += "Please select Coupon Type for " + dScheme + " Scheme\n";
    }
    if (dSchemeQty == "" && (dScheme != "Select" || dSchemeDenomination != "0")) {
        Error += "Please enter Qty for " + dScheme + " Scheme\n";
    }
    if (dSchemeQty == "0" && (dScheme != "Select" || dSchemeDenomination != "0" || dSchemeQty == "")) {
        Error += "Please enter Valid Qty for " + dScheme + " Scheme\n";
    }


    if (dScheme != "Select" && dSchemeDenomination != "0") {
        if (!FindDuplicateNewSchemeRows(dScheme, dSchemeDenomination)) {

            strSchemesRows = strSchemesRows +
                                "" + separator +
                                "" + separator +
                                "" + separator +
                                dSchemeDenomination + separator +
                                dSchemeQty + separator +
                                dMapid + separator +
                                dSchemeId + ",";
        }
        else {
            Error += "Duplicate New Schemes Damage\n";
        }
    }
}

排查关键点

  • IE专属API兼容性问题:代码中使用的ddl.all是IE独有的DOM属性,Chrome、Firefox、Edge等标准浏览器不支持该属性,会直接抛出未捕获错误。替换为标准DOM方法获取下拉选项:
    var ddl = document.getElementById("ContentPlaceHolder1_dc1_ddlscheme");
    for (var index = 0; index < ddl.options.length; index++) {
        if (ddl.options[index].selected) {
            dScheme = ddl.options[index].text;
            break;
        }
    }
    
  • 未定义函数风险:确认FindDuplicateNewSchemeRows函数的作用域是否全局可访问,避免在非IE浏览器中出现函数未定义错误。
  • 字符串格式问题:strSchemesRows拼接后末尾会残留多余逗号,可能导致后端解析失败,建议在拼接完成后清理:
    if(strSchemesRows && strSchemesRows.endsWith(',')) {
        strSchemesRows = strSchemesRows.slice(0, -1);
    }
    
  • 控制台错误精准定位:打开浏览器开发者工具(F12)的Console标签,查看具体的错误信息(比如Cannot read property 'all' of null或ddl.all is undefined),这是快速定位问题的核心依据。

内容的提问来源于stack exchange,提问作者jack papa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:55:23