Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не могу понять почему не работает :( (https://javascript.ru/forum/jquery/13163-ne-mogu-ponyat-pochemu-ne-rabotaet.html)

Android47 18.11.2010 13:12

Не могу понять почему не работает :(
 
Уважаемые, помогите найти ошибку или исправить если что не так. Ломаю голову второй день.
Я велосипед не изобретаю, хочу получить обычный валидатор логина:


$(document).ready(function()
      {
$("#login").blur(function() {
$("#msgbox").removeClass().addClass('messagebox').text('Проверка...').fadeIn("slow");
$.post("php/user_availability.php",{ user_name:$(this).val() }, function(data) {
alert(data);
if(data=='case1') 
{
$("#msgbox").fadeTo(200,0.1,function() { 
$(this).html('Это имя уже занято').addClass('messageboxerror').fadeTo(900,1);
}); 
}
else
{
//если имя доступно
$("#msgbox").fadeTo(200,0.1,function() { 
//тут прописывается сообщение о доступности имени
$(this).html('Имя доступно для регистрации').addClass('messageboxok').fadeTo(900,1); 
});
}
});
});
});



Имеется так же user_availability.php :

<?php    
$user_name=$_POST['user_name'];
include ("bd.php");	
$result = mysql_query("SELECT id FROM users WHERE login='$user_name'",$db);
$myrow = mysql_fetch_array($result);
if (empty($myrow['id'])) {
echo 'case1'; } 
if (!empty($myrow['id'])) {
echo 'case2'; }
?>


jquery подключен все как надо. Дело в том, что тот извесный пример (про рошана) прекрасно работал, но когда подключил БД, скрипт стал вести себя странно:
user_availability.php прекрасно возвращает case1 или case2, после чего алертом прекрасно выводится case1 или case2, но когда проверятся условие if(data=='case1') неважно что выводил у нас алерт case1 или case2 это условие всеравно срабатывает и мне всегда выходит сообщение 'Это имя уже занято'. Условие просто не работает. Я уже менял везде и скобочки и кавычки с 1 на 2, с 2 на 1, условие всеравно не выполняется, в чем может быть причина ?

Gvozd 18.11.2010 13:17

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Исправил ваше сообщение

Gvozd 18.11.2010 13:22

в вашем коде все вроде в порядке.
вы уверены, что выложили тот же код, который не работает?
залейте на хостинг, пожалуйста свой пример, и скажите примеры занятого логина

Android47 18.11.2010 13:25

а какой есть бесплатный хостинг, где это можно быстро разместить ?

Gvozd 18.11.2010 13:44

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

а тем временем, поставьте firebug и попробуйте по человечески отладить код.

PS почему-то мне кажется, что замена строки
$(this).html('Это имя уже занято').addClass('messageboxerror').fadeTo(900,1);

на
$(this).html('Это имя уже занято'+data+(data=='case1')+(data=='case2')).addClass('messageboxerror').fadeTo(900,1);

что замена покажет много чего интересного
попробуйте код для обоих случаев(валидного и невалидного логина)


Часовой пояс GMT +3, время: 20:04.