Вход

Просмотр полной версии : функция не успевает


Sadist_dead
01.10.2011, 23:28
Уже два часа сижу и не могу решить проблему
дело обстоит вот в чем: есть функция которая забирает значение из php
'yes' или 'no' если да то пишет одно если нет то другое...неважно
и все прекрасно работало , пока в самом php не стали происходит запросы к базе....

тут я подумал что возможна функция просто не успевает забрать значение...
и добавил в функцию проверку что если нет yes и нет no вывести 'ошибку не успевает ' так оно и случилось.... функция не забирает значения еще до того как php из вывел на экран
как решить данную Задачу....

<script language="javascript">
//<!---------------------------------+
// Developed by Roshan Bhattarai
// Visit http://roshanbh.com.np for this script and more.
// This notice MUST stay intact for legal use
// --------------------------------->
$(document).ready(function()
{
$("#login").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Пр верка...').fadeIn("slow");
$.post("user_availability.php",{ login:$(this).val() } ,function(data)
{
if(data=='no')
{
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('Это имя уже занято').addClass('messageboxerror').fadeTo( 900,1);
});
}
if(data=='yes')
{
$("#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 );
});
}

});

});
});
</script>

zebra
01.10.2011, 23:31
Это в php наверное проблема

Sadist_dead
01.10.2011, 23:35
Это в php наверное проблема
нет 100% так как файле php параметр $login я задаю жестко
и открываю файл php от показывает yes
а функция выводит не успел

zebra
01.10.2011, 23:48
В data приходит, то что отдает сервер. Поэтому проверьте php скрипт. Ну и для проверки всё лишнее убрать из jsa

$("#login").blur(function() {
$.post("user_availability.php",{ login:$(this).val() } ,function(data){
console.log(data);
});
});

Sadist_dead
01.10.2011, 23:55
$(document).ready(function()
{
$("#login").blur(function() {
$.post("user_availability.php",{ login:$(this).val() } ,function(data){
console.log(data);
alert(data);
});
});
});


alert показывает no

как то не логично получается.. alert показывает ...то что приходит....а не работает странно как то

zebra
01.10.2011, 23:57
Ну так всегда приходит yes/no ?!:nono:

Sadist_dead
02.10.2011, 00:00
Ну так всегда приходит yes/no ?!:nono:

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

Sadist_dead
02.10.2011, 00:04
Кадр номер два

вставил алерт
вывожу дата в дато пришло no alert вывел
дальше идет сравнение и пишет Не успел ?
Ржу не могу.. как так что за бред
$(document).ready(function()
{
$("#login").blur(function()
{
$("#msgbox").removeClass().addClass('messagebox').text('Пр верка...').fadeIn("slow");
$.post("user_availability.php",{ login:$(this).val() } ,function(data)
{ alert (data);
if(data==='no')
{
$("#msgbox").fadeTo(200,0.1,function()
{
$(this).html('Это имя уже занято').addClass('messageboxerror').fadeTo( 900,1);
});
}
if(data==='yes')
{
$("#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 );
});
}

});

});
});
</script>

zebra
02.10.2011, 00:05
Может там пробел стоит, или какой-то символ вместе с yes/no

zebra
02.10.2011, 00:06
Кстати выведите data и data.length может поможет

Sadist_dead
02.10.2011, 00:10
сейчас точно с ума сойду
в php
echo "no";
в скрипте сам видел
if(data==='no')
{

а знаешь что вывел
data.length
4

zebra
02.10.2011, 00:17
Я же говорю это php, может перед echo 'no'; есть какой то вывод пробелов.

Sadist_dead
02.10.2011, 00:26
Я же говорю это php, может перед echo 'no'; есть какой то вывод пробелов.

<?php
include ('blocks/bd.php');
$login = 'user';
$result2 = mysql_query("SELECT login FROM users",$db);
$spisok = mysql_fetch_array($result2);
do{$existing_users[]= $spisok;}
while ($spisok = mysql_fetch_array($result2));
if (in_array($login, $existing_users))
{echo 'no';}
else{echo 'yes';}
?>

zebra
02.10.2011, 00:30
А если так оставить?

<?php
echo 'no';
die();
?>

И в какой кодировке файл?!

Sadist_dead
02.10.2011, 00:32
я думал про кодировку....но какая она не была разве aler дата не выдал бы ее криво
у меня utf 8

zebra
02.10.2011, 00:37
А пробел или перенос строки перед <?php есть?! Выложите этот файл сюда

Sadist_dead
02.10.2011, 00:46
я бы погрешил на кодировку
потому что когда я не делаю запрос в базу в php а создаю массив ручками..
то все работает .... соответственно скорее всего из базы приходит не в той кодировке..(допустим), но на вывод no или yes это же не влияет ....
хотя кодировке везде одинаковые ... это я так мысли в слух

zebra
02.10.2011, 00:58
Кодировка файлов у вас ansi. Выведите просто echo 'нет'; data.length будет 2. Весь код проверить не могу. Вы же знаете, что ajax передается в кодировке utf-8?

Sadist_dead
02.10.2011, 01:05
Да конечно. поменял ... , но у меня ни чего не изменилось. за то я кажется нашел что приходит на самом деле....
посмотрев исходный код страницы.....php
я увидел следующие
1.
2. yes
1 и 2 это строки

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

zebra
02.10.2011, 01:12
если закоментить лишний код в пхп, то всё нормально. Может это ошибка выскакивает, может вывод в файле bd.php, может там перед <?php что-то лишнее :nono:

Sadist_dead
02.10.2011, 01:57
если закоментить лишний код в пхп, то всё нормально. Может это ошибка выскакивает, может вывод в файле bd.php, может там перед <?php что-то лишнее :nono:

Ты был прав в bd.php были пробелы...
все заработало.... вот блин глупость какая.... как они могли влиять я до сих пор не понял....Спасибо тебе Огромное.... интересно было ....
тема закрыта
Хотя интересно узнать почему пробелы в скрипте влияют на вывод echo

zebra
02.10.2011, 11:44
Просто надо передавать данные через json и такиъ проблем не будет(будут новые :) )

Sadist_dead
02.10.2011, 19:00
да , с тобой согласен полностью, я так всегда и делал , у меня все запросы ajax post json, а тут блин скрипт нарыл с разу с проверкой формы, интересно было , понять .... с чего не работает....Еще раз спасибо за помощь. Удачи