Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите разобратся с ajax

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
miha25
Отправлено: 02 Ноября, 2015 - 20:29:43
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




Здравствуйте! Я в этом деле(в ajax) совсем новичек, поэтому прошу вашей помощи, решил прикрутить к сайту обновление контента без перезагрузки страницы, вот код файла search_inlist.php:

CODE (html):
скопировать код в буфер обмена
  1. <div id="preloader" class="text-center">Идёт загрузка...<br><img src="http://site.com/images/loading.gif"></div>
  2. <div id="results">
  3. здесь прописан код обращения к базе и сюда же выводит результат ajax
  4. </div>


CODE (javascript):
скопировать код в буфер обмена
  1. function sctop() {
  2.             $('body,html').animate({
  3.                 scrollTop: 0
  4.             }, 800);
  5.             return false;
  6.         };
  7.    
  8. $('#btn1').live('click', function(){     
  9.                 $("#results").ajaxStart(function(){
  10.         sctop();               
  11.         NProgress.start();
  12.             //$('#results').fadeOut("slow");
  13.                 $('#preloader').attr('id', 'preloaderno');
  14.                 return false;
  15.                 });
  16.         $("#results").ajaxComplete(function(){
  17.         //$('#results').fadeIn("slow");
  18.                 $('#preloaderno').attr('id', 'preloader');
  19.                 return false;
  20.         });
  21.  
  22.             var params = $(this).attr('href').split('?');
  23.                
  24.                         $.ajax({
  25.                           type: 'GET',
  26.                           url: 'http://site.com/core/search_inlist.php',
  27.                           data: params[1]+'&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  28.                           success: function(data) {
  29.                                 $('#results').html(data);
  30.                           }
  31.                         });
  32.                           return false;
  33.                         });  
  34.                        
  35.         NProgress.done();



Суть его такова, при клике по номеру страницы(пагинация), включается прокрутка вверх, передает данные по которым вытягивает записи из базы и отображает их, проблема в том что когда я дохожу допустим до 7 страницы начинаются глюки, идет scrollTop подгужаются данные, но колесиком мышки опустится обратно вниз не могу, что самое главное этот глюк наростает с каждой страницы, сначала немного нужно подождать и колесико на прокрутку вниз срабатывает, при клике на следующую страницу еще больше глючит, но подождав все таки срабатывает прокрутка вниз с помощью мишки, а вот уже на седьмой клик по странице все подвисает и ужасно тормозит, перечитал много, понять не могу почему, так как не хватает ума(, помогите плиз
 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 20:37:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. function sctop() {
  2.     $('body,html').animate({
  3.         scrollTop: 0
  4.     }, 800);
  5. };
  6.  
  7. $(document.body)
  8. .ajaxStart(function() {
  9.     sctop();
  10.     NProgress.start();
  11.     //$('#results').fadeOut("slow");
  12.     $('#preloader').attr('id', 'preloaderno'); // что за бред?
  13. });
  14. .ajaxComplete(function() {
  15.     //$('#results').fadeIn("slow");
  16.        
  17.         NProgress.done(); // имхо, оно должно тут быть
  18.        
  19.     $('#preloaderno').attr('id', 'preloader'); // что за бред ? используйте классы
  20. });
  21.  
  22. $('#btn1').on('click', function() {
  23.     $.ajax({
  24.         type: 'GET',
  25.         url: 'http://site.com/core/search_inlist.php',
  26.         data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  27.         success: function(data) {
  28.             $('#results').html(data);
  29.         }
  30.     });
  31.        
  32.     return false;
  33. });


пока так, а там посмотрим
 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 20:46:48
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




SAD, спасибо что откликнулись, не работает к сожалению, просто переходит как по обычной ссылке в обход ajax

(Отредактировано автором: 02 Ноября, 2015 - 20:47:13)

 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Ноября, 2015 - 20:48:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 20:58:07
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




DeepVarvar пишет:
http://xmlhttprequest.ru/

спасибо, посмотрел, почитал, но к сожалению для меня это темный лес, боюсь что сложить с этого то что мне нужно не смогу, если бы я так в этом разбирался, я бы наверное не писал бы сюда с просьбой о помощи
 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 21:04:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




конечный код покажите, если он отличается от моего
(Добавление)
и какая версия jquery у Вас?
 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 21:26:09
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




SAD пишет:
конечный код покажите, если он отличается от моего
(Добавление)
и какая версия jquery у Вас?


версия - 1.7.2

код я использовал тот который вы написали, но он отказывается работать

CODE (javascript):
скопировать код в буфер обмена
  1.     function sctop() {
  2.         $('body,html').animate({
  3.             scrollTop: 0
  4.         }, 800);
  5.     };
  6.      
  7.     $(document.body)
  8.     .ajaxStart(function() {
  9.         sctop();
  10.         NProgress.start();
  11.         //$('#results').fadeOut("slow");
  12.         $('#preloader').attr('id', 'preloaderno'); // что за бред?
  13.     });
  14.     .ajaxComplete(function() {
  15.         //$('#results').fadeIn("slow");
  16.            
  17.             NProgress.done(); // имхо, оно должно тут быть
  18.            
  19.         $('#preloaderno').attr('id', 'preloader'); // что за бред ? используйте классы
  20.     });
  21.      
  22.     $('#btn1').on('click', function() {
  23.         $.ajax({
  24.             type: 'GET',
  25.             url: 'http://site.com/core/search_inlist.php',
  26.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  27.             success: function(data) {
  28.                 $('#results').html(data);
  29.             }
  30.         });
  31.            
  32.         return false;
  33.     });

(Отредактировано автором: 02 Ноября, 2015 - 21:27:12)

 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 21:31:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




в консоли ошибки есть?
 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 21:36:45
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




SAD пишет:
в консоли ошибки есть?


SyntaxError: expected expression, got '.' jquery.min.js:21:4
Метод getPreventDefault() является устаревшим. Для его замены используйте метод defaultPrevented. jquery.min.js:3:0

когда убираю верхнюю часть(скролл)

CODE (javascript):
скопировать код в буфер обмена
  1. function sctop() {
  2.         $('body,html').animate({
  3.             scrollTop: 0
  4.         }, 800);
  5.     };
  6.      
  7.     $(document.body)
  8.     .ajaxStart(function() {
  9.         sctop();
  10.         NProgress.start();
  11.         //$('#results').fadeOut("slow");
  12.         $('#preloader').attr('id', 'preloaderno'); // что за бред?
  13.     });
  14.     .ajaxComplete(function() {
  15.         //$('#results').fadeIn("slow");
  16.            
  17.             NProgress.done(); // имхо, оно должно тут быть
  18.            
  19.         $('#preloaderno').attr('id', 'preloader'); // что за бред ? используйте классы
  20.     })
;

работает, но только один раз, при переходе на след. страницу, дальше просто срабатывает ссылка в обход ajax

(Отредактировано автором: 02 Ноября, 2015 - 21:39:47)

 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 21:41:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. function sctop() {
  2.         $('body,html').animate({
  3.             scrollTop: 0
  4.         }, 800);
  5.     };
  6.      
  7.     $(document.body)
  8.     .ajaxStart(function() {
  9.         sctop();
  10.         NProgress.start();
  11.         //$('#results').fadeOut("slow");
  12.         $('#preloader').attr('id', 'preloaderno'); // что за бред?
  13.     })
  14.     .ajaxComplete(function() {
  15.         //$('#results').fadeIn("slow");
  16.            
  17.             NProgress.done(); // имхо, оно должно тут быть
  18.            
  19.         $('#preloaderno').attr('id', 'preloader'); // что за бред ? используйте классы
  20.     });
  21.      
  22.     $('#btn1').on('click', function() {
  23.         $.ajax({
  24.             type: 'GET',
  25.             url: 'http://site.com/core/search_inlist.php',
  26.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  27.             success: function(data) {
  28.                 $('#results').html(data);
  29.             }
  30.         });
  31.            
  32.         return false;
  33.     });


поправил
 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 21:53:49
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




SAD пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. function sctop() {
  2.         $('body,html').animate({
  3.             scrollTop: 0
  4.         }, 800);
  5.     };
  6.      
  7.     $(document.body)
  8.     .ajaxStart(function() {
  9.         sctop();
  10.         NProgress.start();
  11.         //$('#results').fadeOut("slow");
  12.         $('#preloader').attr('id', 'preloaderno'); // что за бред?
  13.     })
  14.     .ajaxComplete(function() {
  15.         //$('#results').fadeIn("slow");
  16.            
  17.             NProgress.done(); // имхо, оно должно тут быть
  18.            
  19.         $('#preloaderno').attr('id', 'preloader'); // что за бред ? используйте классы
  20.     });
  21.      
  22.     $('#btn1').on('click', function() {
  23.         $.ajax({
  24.             type: 'GET',
  25.             url: 'http://site.com/core/search_inlist.php',
  26.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  27.             success: function(data) {
  28.                 $('#results').html(data);
  29.             }
  30.         });
  31.            
  32.         return false;
  33.     });


поправил


теперь работает вместе с скролом, но только один раз(на следующую страницу), дальше переходит как по обычной ссылке, ajax не отрабатывает, если меняю on('click', function() { на live('click', function() {, тогда переходит и на следующую но остается проблема таже что и была с подвисанием после скрола вверх, вот еще добавлю код самой кнопки

PHP:
скопировать код в буфер обмена
  1. if($total_rows>=$lp){
  2.                                 $a="<a id=\"btn1\" href=\"".$h."?op=search";
  3.                                 if(@$data_from_pag!="")$a.="&query=".@$data_from_pag;
  4.                                 if(@$_GET['l'])$a.="&l=".$_GET['l'];
  5.                                 if(@$_GET['nomorph'])$a.="&nomorph=".@$_GET['nomorph'];
  6.                                 if(@$_GET['cat'])$a.="&cat=".@$_GET['cat'];
  7.                                 if(@$_GET['type'])$a.="&type=".@$_GET['type'];
  8.                                 if(@$_GET['images'])$a.="&images=".@$_GET['images'];
  9.                                 if(@$_GET['city'])$a.="&city=".@$_GET['city'];
  10.                                 if(@$_GET['from'])$a.="&from=".@$_GET['from'];
  11.                                 if(@$_GET['before'])$a.="&before=".@$_GET['before'];
  12.                                 if(@$_GET['time'])$a.="&time=".@$_GET['time'];
  13.                                 $a.="&page=";
  14.                                 if($page!=1)$pervpage=$a."1\" title=\"".$lang[174]."\">&nbsp;&nbsp;«&nbsp;&nbsp;</a> ";
  15.                                 if($page!=$total)$nextpage=$a.$total."\" title=\"".$lang[175]."\">&nbsp;&nbsp;»&nbsp;&nbsp;</a>";              
  16.                                 $pageleft="";$pageright="";
  17.                                 for($i=$c['limit_pagination_on_page'];$i>=1;$i--)if($page-$i>0)$pageleft.=$a.($page-$i)."\">".($page-$i)."</a>";
  18.                                 for($i=1;$i<=$c['limit_pagination_on_page'];$i++)if($page+$i<=$total)$pageright.=$a.($page+$i)."\">".($page+$i)."</a>";
  19.                                 echo "<ul class=\"pagination\"><li>".@$pervpage.@$pageleft."<span class=\"active_page\">".$page."</span>".@$pageright.@$nextpage."</li></ul>";
  20.                                
  21.                 }
 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 21:58:47
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. $(document.body).on('click', '#btn1', function() {
  2.         $.ajax({
  3.             type: 'GET',
  4.             url: 'http://site.com/core/search_inlist.php',
  5.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  6.             success: function(data) {
  7.                 $('#results').html(data);
  8.             }
  9.         });
  10.            
  11.         return false;
  12.     });


чтобы без live

уберите скролл и посмотрите, тормозит ли
 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 22:04:24
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




SAD пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. $(document.body).on('click', '#btn1', function() {
  2.         $.ajax({
  3.             type: 'GET',
  4.             url: 'http://site.com/core/search_inlist.php',
  5.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  6.             success: function(data) {
  7.                 $('#results').html(data);
  8.             }
  9.         });
  10.            
  11.         return false;
  12.     });


чтобы без live

уберите скролл и посмотрите, тормозит ли


без live я не могу проверить, так как если использовать on, тогда открывается только первая страница и ajax показываете результат, когда хочу открыть вторую страницу, ajax уже не срабатывает, и просто перехожу как по обычной ссылке, страница перезагружается

без live ajax не получает наверное переменных, и поэтому перестает работать

(Отредактировано автором: 02 Ноября, 2015 - 22:06:29)

 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 22:06:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




ладно, с live тормозит или нет, если убрать скролл?

(Отредактировано автором: 02 Ноября, 2015 - 22:06:43)

 
 Top
miha25
Отправлено: 02 Ноября, 2015 - 22:14:19
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2015  


Помог: 0 раз(а)




SAD пишет:
ладно, с live тормозит или нет, если убрать скролл?


до 5 страницы отрабатывает вообще быстро, с 6 уже начинает медленнее, на 11 вообще тормозит ужасно
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB