Пользовательская функция проверки в реальном времени - PullRequest
1 голос
/ 23 декабря 2009

Я пытался создать свою собственную функцию LiveValidation ( LiveValidation.com ), которая подключается к базе данных и проверяет, существует ли уже имя пользователя. Это соответствующая часть формы:

    Username: <input type="text" name="username" id="username" class="textinput"> 
    <script type="text/javascript"> 
        var username = new LiveValidation('username');
        username.add( Validate.Presence );
        username.add( Validate.Length, { minimum: 3, maximum: 12 } );
        username.add( Validate.Username );  
    </script>

Это моя функция Validate.Username:

Validate.Username = function(value, paramsObj){

        var paramsObj = paramsObj || {};
        var message = paramsObj.failureMessage || "Sorry that username is taken!";

    var http = new XMLHttpRequest();
    var url = "usernamecheck.php";
    var params = "username="+value;
    http.open("POST", url, true);
    http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", params.length);
    http.setRequestHeader("Connection", "close");
    http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200) {
            if(http.responseText == 'yes') {
                return true;
            } else {
                Validate.fail(message);
                return false;
            }
        }
    }
    http.send(params);
}

Вот соответствующая часть usernamecheck.php:

if(mysql_num_rows($query) != 0 && $query) {
            echo "no";
        } else if ($query) {
            echo "yes";
        } else {
            echo "err";
        }

Кажется, что функция работает нормально (если я поставлю alert('fail') выше Validate.fail(message);, я получаю предупреждение, когда используется используемое имя пользователя), но LiveValidation никогда не показывает сообщение об ошибке. Кто-нибудь знает, что я сделал не так?

Спасибо

1 Ответ

1 голос
/ 05 октября 2010

Хммм ... просто глядя на это очень быстро, может ли быть так, что "сообщение" не определено в вашей функции? Это определено в родительской функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...