Просмотр полной версии : функция не успевает
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>
Это в php наверное проблема
Sadist_dead
01.10.2011, 23:35
Это в php наверное проблема
нет 100% так как файле php параметр $login я задаю жестко 
и открываю файл php от показывает yes 
а функция выводит не успел
В 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 показывает ...то что приходит....а не работает странно как то
Ну так всегда приходит 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>
Может там пробел стоит, или какой-то символ вместе с yes/no
Кстати выведите data и data.length может поможет
Sadist_dead
02.10.2011, 00:10
сейчас точно с ума сойду
в php 
echo "no";
в скрипте сам видел
 if(data==='no') 
		  {
а знаешь что вывел 
 data.length
4
Я же говорю это 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';}
?>
А если так оставить?
<?php
echo 'no';
die();
?>
И в какой кодировке файл?!
Sadist_dead
02.10.2011, 00:32
я думал про кодировку....но какая она не была разве aler дата не выдал бы ее криво  
у меня utf 8
А пробел или перенос строки перед <?php есть?! Выложите этот файл сюда
Sadist_dead
02.10.2011, 00:46
я бы погрешил на кодировку
потому что когда я не делаю запрос в базу в php  а создаю массив ручками..
то все работает .... соответственно  скорее всего из базы приходит не в той кодировке..(допустим), но на вывод no или yes это же не влияет ....
хотя кодировке везде одинаковые ... это я так мысли  в слух
Кодировка файлов у вас ansi. Выведите просто echo 'нет'; data.length будет 2. Весь код проверить не могу. Вы же знаете, что ajax передается в кодировке utf-8?
Sadist_dead
02.10.2011, 01:05
Да конечно. поменял ... , но у меня ни чего не изменилось. за то я кажется нашел что приходит на самом деле....
посмотрев исходный код страницы.....php 
я увидел следующие
1.
2. yes 
1 и 2 это строки
можно конечно не извращаться ... передавать длину даты  и все ровно ..
но если проблема реально в кодировке ... это конечно не очень хорошо...
ладно я пока закрою это вариант .... напишу запрос по другому... и выведу json сделаю отпишусь ...минут через  отпишусь
если закоментить лишний код в пхп, то всё нормально. Может это ошибка выскакивает, может вывод в файле bd.php, может там перед <?php что-то лишнее :nono:
Sadist_dead
02.10.2011, 01:57
если закоментить лишний код в пхп, то всё нормально. Может это ошибка выскакивает, может вывод в файле bd.php, может там перед <?php что-то лишнее :nono:
Ты был прав в bd.php были пробелы...
все заработало.... вот блин глупость какая.... как они могли влиять я до сих пор не понял....Спасибо тебе Огромное.... интересно было ....
тема  закрыта
Хотя интересно узнать почему пробелы в скрипте влияют на вывод echo
Просто надо передавать данные через json и такиъ проблем не будет(будут новые :) )
Sadist_dead
02.10.2011, 19:00
да , с тобой согласен полностью, я так всегда и делал , у меня все запросы ajax post json, а тут блин скрипт нарыл с разу с проверкой формы,  интересно было ,  понять .... с чего не работает....Еще раз спасибо за помощь. Удачи
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot