Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
识别可能的错误向量,javascript警报后,混合站点上的web表单似乎禁用了javascript_Javascript_Asp.net_Iis_Knockout.js_Webforms - Fatal编程技术网

识别可能的错误向量,javascript警报后,混合站点上的web表单似乎禁用了javascript

识别可能的错误向量,javascript警报后,混合站点上的web表单似乎禁用了javascript,javascript,asp.net,iis,knockout.js,webforms,Javascript,Asp.net,Iis,Knockout.js,Webforms,问题:当javascript验证器(.valid())失败时(用户没有将电子邮件放入abc@abc.com),弹出一条警报消息(警报(“…”),将css规则应用于坏字段。其他web表单按钮(签入票证)似乎停止工作。这会发生在我们的生产服务器上,但不会发生在开发/测试服务器上。这发生在我测试的3个浏览器中,IE11、chrome和FF IIS堆栈、开发/测试是虚拟机,生产是物理服务器 “签入”按钮是旧的webform部分,新的部分是knockout.js并发送到mvc控制器 我可以调查哪些可能的原

问题:当javascript验证器(.valid())失败时(用户没有将电子邮件放入abc@abc.com),弹出一条警报消息(警报(“…”),将css规则应用于坏字段。其他web表单按钮(签入票证)似乎停止工作。这会发生在我们的生产服务器上,但不会发生在开发/测试服务器上。这发生在我测试的3个浏览器中,IE11、chrome和FF

IIS堆栈、开发/测试是虚拟机,生产是物理服务器

“签入”按钮是旧的webform部分,新的部分是knockout.js并发送到mvc控制器

我可以调查哪些可能的原因

我已经做过的事情:

-安装了关于更改浏览器代理识别的KB260088,没有结果

-与test和prod上安装的软件包相比,唯一的区别是在生产上有更多的安全更新

-更改代码以删除“验证”检查。当我从javascript代码的knockoutJS部分删除此代码块的顶部$('.required')部分时,它似乎可以工作

        vm.save = function () {
        var valid = true;
        $('.required').each(function () {
            if ($(this).valid() == 0) valid = false;
        });
        if (valid) {
            var item = vm.selectedItem();
            item.Company = (item.Company == null) ? "" : item.Company;
            item.Phone = (item.Phone == null) ? "" : item.Phone;
            item.Desc = (item.Desc == null) ? "" : item.Desc;
            item.ClaimContactID = (item.ClaimContactID == 0) ? null : item.ClaimContactID;
            $.ajax({
                url: csMvcController('ClaimContacts', "SaveContact"),
                data: { claimID: claimID, contactID: item.ClaimContactID, contactType: item.ClaimContactTypeID, fName: item.FirstName, lName: item.LastName, company: item.Company, phone: item.Phone, email: item.Email, desc: item.Desc, marketId: item.MarketId, regionSite: item.RegionSite },
                dataType: "json",
                type: "POST",
                success: function (response) {
                    item.ClaimContactID = response["ContactID"];
                    vm.selectedItem(null);
                    ShowButtons(true);
                }
            });
        } else {
            alert("Required information was either missing or not in the proper format.");
        }
    };
我相当肯定签入按钮是web表单,因为它的格式:

<asp:Button ID="btnNewLegal" runat="server" Text="Check-In (Save Changes)" CssClass="cs-btn etc.etc..."
                            OnLoad="btnNewLegal_Load" OnClick="btnNewLegal_Click"></asp:Button>


提前感谢您的帮助,不幸的是,我不能很好地确定这里出了什么问题,所以我不知道用谷歌搜索是为了什么。如果我的格式不好,请告诉我,我会更新的。

看起来,最初knockout.js的新内容(它是一个渲染的部分)被包装在一个表单中,而在asp.net中嵌套表单是不可能的,所以它完全去掉了标记。.valid()js(我假设)试图验证导致提交按钮不再工作的唯一表单(aspnetform)。我删除了valid()功能,手工编写了一些javascript(只是确保某些字段不是空的,但请原谅),并且能够将功能恢复到现有按钮,并允许knockout.js功能也工作

故事的寓意:观察你的表单嵌套在asp.net web表单中。不要使用.valid(),除非您确定它正在验证所需的表单