Я пытался создать свою собственную функцию 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 никогда не показывает сообщение об ошибке. Кто-нибудь знает, что я сделал не так?
Спасибо