Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   функция не успевает (https://javascript.ru/forum/dom-window/21983-funkciya-ne-uspevaet.html)

Sadist_dead 01.10.2011 23:28

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

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

<script language="javascript">
//<!---------------------------------+
//  Developed by Roshan Bhattarai 
//  Visit [url]http://roshanbh.com.np[/url] 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

Цитата:

Сообщение от zebra (Сообщение 129135)
Это в 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

Цитата:

Сообщение от zebra (Сообщение 129144)
Ну так всегда приходит 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

Цитата:

Сообщение от zebra (Сообщение 129152)
Я же говорю это 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

Вложений: 1
я бы погрешил на кодировку
потому что когда я не делаю запрос в базу в 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

Цитата:

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

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

zebra 02.10.2011 11:44

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

Sadist_dead 02.10.2011 19:00

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


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