Плагин JQuery Validator Метод вызова сервера Asp.Net - PullRequest
1 голос
/ 18 сентября 2009

Я использую плагин JQuery Validation для проверки формы (http://docs.jquery.com/Plugins/Validation/)

Например, я могу подтвердить электронную почту в форме.

Что я хотел бы сделать, это проверить, если выбранное имя пользователя уже существует. Итак, мне нужно вызвать метод сервера, который запрашивает базу данных. Как я могу это сделать?

UPDATE

Из ответа balexandre я пробую следующее:

$.validator.addMethod("userName", 
    function(value, element)
    {
        $.get
        (
            "CheckUser.aspx?User=" + value, 
            function(data) 
            {
                if (data == "True") 
                {
                    return false;
                }
                else if (data == "False") 
                {
                    return true;
                }
                else 
                {
                    alert(data);
                }
            }
        );
    },
    "User already exists");

    $(document).ready
    (
        function() 
        {
            $("#aspnetForm").validate
            (
                {
                    rules: 
                    {
                        <%=txtUserName.UniqueID %>: 
                        {
                            required: true,
                            email: true,
                            userName: true                        
                        }
                    }
                }
            );
        }
    );

В ответе я пишу логическое значение (True of False) вместо 1 или 0.

Я знаю, что моей функцией проверки является вызов. Проблема в том, что он всегда показывает сообщение об ошибке, даже если пользователь не существует. Я пытаюсь поставить предупреждающее сообщение перед возвращением true, чтобы увидеть, достигли ли они, и это так. Так что я не понимаю, почему это не работает ...

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

довольно легко, и это хороший метод, который я часто применяю к своим проектам

1 - создать страницу aspx с именем verifyUserAvailability.aspx с файлом с выделенным кодом

2 - удалить все строки, кроме первой в файле aspx

3 - в файле с выделенным кодом внутри события Page_Load вызовите вашу базу данных, например

protected void Page_Load(object sender, EventArgs e) {
    string username = Request["usr"];
    int r = 0;

    if(!String.IsNullOrEmpty(username))
        if( yourDAL.getUserAvailability(username) )
            // your method would send true if user is available to be used
            r = 1;

   Response.Clear();
   Response.Write(r);
   Response.Flush();
}

4 - теперь на странице формы создайте кнопку, подобную

<input id="btnCheckAvailability" type="button" 
       value="Check availability" 
       onclick="javascript:checkAvailability();" />

5 - создать метод checkAvailability ()

<script type="text/language">

    function checkAvailability() {
        var $user = $("#UsernameInputBox");
        $.get("verifyUserAvailability.aspx?usr=" + $user.val(), function(data) {
            // this will call the page passing the username and return 1 or 0
            if( data == "1" ) 
                $user.css("background-color", "green");
            else 
                $user.css("background-color", "red");
        });
    }

</script>
0 голосов
/ 18 сентября 2009

Это должно сработать ...

http://riderdesign.com/articles/Check-username-availability-with-JQuery-and-ASP.NET.aspx

ИЛИ ...

Один ответ показывает, как вызвать службу, а второй - как вызвать метод страницы.

Вызов метода на стороне сервера ASP.NET через jQuery

...