1

我收到一个 JavaScript 错误(当然只在 IE 中),我不知道为什么。我以为它是一个尾随逗号或其他东西,但我找不到。我希望我忽略了一些东西,也许你们中的一个人可以看到我错过了什么。

我的控件和自定义验证器:

<asp:TextBox runat="server" ID="txtName" MaxLength="100" CssClass="styled" Columns="50" />
                                <asp:CustomValidator runat="server" ID="cvName" ErrorMessage="Enter a valid contact name or email address" ControlToValidate="txtName" Display="None" ValidationGroup="PlatformContact" ClientValidationFunction="doesUserExist" />
                                <asp:ValidatorCalloutExtender ID="vceName" runat="server" TargetControlID="cvName" WarningIconImageUrl="~/img/icons/ic_asterisk.gif" CssClass="validatorStyled" PopupPosition="Right" CloseImageUrl="~/img/icons/ic_x_close_orange.png" />                                    
                                <asp:RequiredFieldValidator runat="server" ID="valName" ErrorMessage="Enter a contact name or email address" ControlToValidate="txtName" Display="None" ValidationGroup="PlatformContact" />
                                <asp:ValidatorCalloutExtender ID="vceNameRequired" runat="server" TargetControlID="valName" WarningIconImageUrl="~/img/icons/ic_asterisk.gif" CssClass="validatorStyled" PopupPosition="Right" CloseImageUrl="~/img/icons/ic_x_close_orange.png" />

这是我正在使用的 JavaScript/jQuery:

<script language="javascript" type="text/javascript">
    var userExists = true;

    function doesUserExist(source, args) {
        var txtName = $('#<%= txtName.ClientID %>').val();
        $.ajaxSetup({ cache: false });
        $.ajax({
            type: "POST",
            contentType: "application/json",
            data: "{name:'" + txtName + "'}",
            url: "ManageMyContacts.aspx/DoesUserExist",
            dataType: "json",
            success: function (result) {
                userExists = result.d;
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                //Something bad happened,redirect to login page
                window.location.href = '<%= ResolveUrl("~/Default.aspx") %>';
            }
        });
        args.IsValid = userExists;
    }
</script>

非常感谢任何见解。

编辑:JavaScript 错误

消息:'controltovalidate' 为空或不是对象

这是我用户检查用户名的WebMethod(在后面的代码中)

[WebMethod(EnableSession = true)]
    public static bool DoesUserExist(string name)
    {
        ManageMyContactsService service = new ManageMyContactsService();
        int index = name.IndexOf("[") + 1;
        if (index > 0)
        {
            string email = name.Substring(index, name.Length - (index + 1));
            return service.DoesUserExist(email);
        }
        else if (name.IndexOf("@") == -1)
            return false;
        else
            return service.DoesUserExist(name);
    }

我注意到由于某种原因,dosUserExist 函数被调用了两次,有人能从这段代码中说出原因吗?

4

1 回答 1

0

似乎 UpdatePanel 导致了第二次 ajax 调用并导致 IE 抛出 JS 错误。在其他浏览器中运行良好,但不是 IE7/8!

希望对有类似问题的人有所帮助。

于 2013-01-15T12:44:19.010 回答