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

Identify possible bug vectors, javascript seems disabled for web forms on hybrid site after javascript alert

本文关键字:javascript 表单 网页 网站 错误 向量 识别 混合      更新时间:2023-09-26

问题:当javascript验证器(.valid())失败时(用户没有在abc@abc.com),弹出一条警告消息(alert("…")),将css规则应用于坏字段。它看起来好像其他web表单按钮(签入票证)停止工作。这种情况发生在我们的生产服务器上,但不是开发/测试服务器。这发生在我测试的三个浏览器中,IE11,chrome,FF.

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

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

我可以调查的可能原因是什么?

我已经做过的事情:

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

-与测试版和生产版安装的软件包相比,唯一的区别是生产版的安全更新更多。

-已更改代码以删除"验证"检查。当我从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.");
        }
    };

我相当确定,登记按钮是网络表单,因为它的格式:

<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(),除非你确定它正在验证你想要的表单。