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 :: ожидание ответа от сервер

 PHP.SU

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


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

> Без описания
bambr32
Отправлено: 02 Апреля, 2015 - 22:26:01
Post Id


Новичок


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


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




оешил сделать сделать так, чтобы при ожидании ответа AJAX-запроса от сервера крутилась анимация (бегающий кружок с надписью "loading...")

Сам в AJAX разбираюсь очень плохо, поэтому решил поискать примеры от старших товарищей. Из того, что нашел, более-менее понятно вот тут:

================================ ======
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<style>
/*описание стилей*/
#loadImg{position:absolute; z-index:1000; display:none}
</style>
</head>
<body>

<!-- содержимое страницы -->

<img id="loadImg" src="img/load.gif" />
</body>
</html>

При старте ajax-запроса покажем изображение с анимацией загрузки в центре страницы, а при получении ответа от сервера скроем эту анимацию:

$.get("/ajaxtest.php", onAjaxSuccess); // - отправим запрос на сервер
startLoadingAnimation(); // - запустим анимацию загрузки

function onAjaxSuccess(data) // - функция завершения запроса
{
stopLoadingAnimation();

// дальнейшая работа с полученными от сервера данными
...
}

function startLoadingAnimation() // - функция запуска анимации
{
// найдем элемент с изображением загрузки и уберем невидимость:
var imgObj = $("#loadImg");
imgObj.show();

// вычислим в какие координаты нужно поместить изображение загрузки,
// чтобы оно оказалось в серидине страницы:
var centerY = $(window).scrollTop() + ($(window).height() + imgObj.height())/2;
var centerX = $(window).scrollLeft() + ($(window).width() + imgObj.width())/2;

// поменяем координаты изображения на нужные:
imgObj.offset(top:centerY, left:centerX);
}

function stopLoadingAnimation() // - функция останавливающая анимацию
{
$("#loadImg").hide();
}


================================ =====

Я наверное слишком деревянный, так как не могу понять, куда это вставлять (начиная с $.get("/ajaxtest.php", onAjaxSuccess); // - отправим запрос на сервер и до конца примера).
И что такое /ajaxtest.php??? Это файл, который будет загружаться после обработки AJAX-запроса или что-то ещё?


Я обращаюсь к серверу так:

<span onclick="PostComments('post_comments<?echo $data['Post'];?>', 'post_comments_form<?echo $data['Post'];?>', 'post_comments.php?id_post=<?echo $data['Post'];?>&id=<?echo $id;?>&count_vsego=<?echo $data['LikeCount'];?>')"><?echo $data['LikeCount'];?></span>


т.е. после нажатия на данный span в див <div id="post_comments"> загружается файл post_comments.php

Скрипт, с помощью которого загружаются данные выглядит так:

<script type="text/javascript">
function PostComments(post_comments<?echo $data['Post'];?>,post_comments_form<?echo $data['Post'];?>,url) {
jQuery.ajax({
url: url, //Адрес подгружаемой страницы
type: "POST", //Тип запроса
dataType: "html", //Тип данных
data: jQuery("#"+post_comments_form<?echo $data['Post'];?>).serialize(),
success: function(response) { //Если все нормально
document.getElementById(post_comments<?echo $data['Post'];?>).innerHTML = response;
},
error: function(response) { //Если ошибка
document.getElementById(post_comments<?echo $data['Post'];?>).innerHTML = "Ошибка при отправке формы";
}
});
}
</script>

Если можно, разъясните на пальцах, плз, что куда вставить, чтобы начала работать данная функция (анимация загрузки)...
 
 Top
nerv
Отправлено: 03 Апреля, 2015 - 00:23:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


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




учись заключать код в теги


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
lastdays
Отправлено: 03 Апреля, 2015 - 07:51:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


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




Рисунок загрузки изначально нужно скрыть, добавляем display:none;

<img id="loadImg" src="img/load.gif" style="display:none;"/>


<input type="button" id="send" value="Отправить">


CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. //- Отправляем аякс запрос  при клике на кнопку "отправить".
  4. $( "#send" ).click(function() {
  5. //- Показываем индикатор загрузки
  6. $('#loadImg').show();
  7.  
  8.    $.ajax({
  9.          type : 'POST',
  10.          url: "ajax.php",
  11.          data: {
  12.             firstname  : 'имя',
  13.             lastname : 'фамилия',
  14.          },
  15.          dataType: 'html',
  16.          success: function(data){  
  17.                //- скрываем индикатор загрузки
  18.                $('#loadImg').hide();
  19.          },
  20.          error : function(request,error){
  21.            console.log(request,error);
  22.          }
  23.    });
  24.  
  25. });
  26.  
  27.  


Можно искусственную задержку делать c помощью функции setTimeout, например и показывать загрузку, пока она отработает.

(Отредактировано автором: 03 Апреля, 2015 - 07:52:13)

 
 Top
DeepVarvar Супермодератор
Отправлено: 03 Апреля, 2015 - 08:49:11
Post Id



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


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


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




lastdays пишет:
Рисунок загрузки изначально нужно скрыть
Для начала нужно вообще получить разрешение от некрософта на использование кастомного аякс-лоадера: http://www[dot]google[dot]com/patents/US20070124666 Не понял
 
 Top
bambr32
Отправлено: 06 Апреля, 2015 - 14:09:01
Post Id


Новичок


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


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




nerv пишет:
учись заключать код в теги

виноват, исправлюсь...
(Добавление)
lastdays пишет:
Рисунок загрузки изначально нужно скрыть, добавляем display:none;

<img id="loadImg" src="img/load.gif" style="display:none;"/>


<input type="button" id="send" value="Отправить">


CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. //- Отправляем аякс запрос  при клике на кнопку "отправить".
  4. $( "#send" ).click(function() {
  5. //- Показываем индикатор загрузки
  6. $('#loadImg').show();
  7.  
  8.    $.ajax({
  9.          type : 'POST',
  10.          url: "ajax.php",
  11.          data: {
  12.             firstname  : 'имя',
  13.             lastname : 'фамилия',
  14.          },
  15.          dataType: 'html',
  16.          success: function(data){  
  17.                //- скрываем индикатор загрузки
  18.                $('#loadImg').hide();
  19.          },
  20.          error : function(request,error){
  21.            console.log(request,error);
  22.          }
  23.    });
  24.  
  25. });
  26.  
  27.  


Можно искусственную задержку делать c помощью функции setTimeout, например и показывать загрузку, пока она отработает.



я наверное что-то не то делаю - создал вот такую пустую страницу. После нажатия кнопки ничего не происходит.
В чем моя ошибка?

PHP:
скопировать код в буфер обмена
  1.  
  2.   <script type="text/javascript">
  3.  //- Отправляем аякс запрос  при клике на кнопку "отправить".
  4. $( "#send" ).click(function() {
  5. //- Показываем индикатор загрузки
  6. $('#loadImg').show();
  7.  
  8.    $.ajax({
  9.          type : 'POST',
  10.          url: "ajax.php",
  11.          data: {
  12.             firstname  : 'имя',
  13.             lastname : 'фамилия',
  14.          },
  15.          dataType: 'html',
  16.          success: function(data){  
  17.                //- скрываем индикатор загрузки
  18.                $('#loadImg').hide();
  19.          },
  20.          error : function(request,error){
  21.            console.log(request,error);
  22.          }
  23.    });
  24.  
  25. });
  26.  
  27.  
  28.    </script>
  29. <img id="loadImg" src="./images/ajax-loader.gif" style="display:none;"/>
  30.  
  31.  
  32. <input type="button" id="send" value="Отправить">
  33.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 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