Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по AJAX, появление картинки прелоадера 
:(
    Опции темы
supercelt
Дата 29.8.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: 1
Всего: 1



Это код страницы

Код

<script type="text/javascript" src="../lib/JsHttpRequest/JsHttpRequest.js"></script>
<script type="text/javascript">
function showload(){document.getElementById('ajaxload').style.display = "block"}
function hideload(){document.getElementById('ajaxload').style.display = "none"}
function getID(val){return document.getElementById(val);}

function admin_save()
{
var ADMIN_NAME=document.getElementById('admin_name').value;
var ADMIN_LOGIN=document.getElementById('admin_login').value;
var ADMIN_EMAIL=document.getElementById('admin_email').value;

var req = new JsHttpRequest(); //создаем обьект
//showload()ж
req.onreadystatechange = function() 
{                
  if(req.readyState == 4) 
  {//load complite
  getID('saver_result').innerHTML = req.responseJS.saver_otvet; //otvet - это то что мы отправляем из php 
  }
}
req.open('POST', 'admin_saver.php', true);// куда отправлять
req.send({action:'admin_save',admin_name:ADMIN_NAME, admin_login:ADMIN_LOGIN, admin_email:ADMIN_EMAIL}); //    LOGIN & PASSWORD будешь ловить в php 
document.getElementById('saver_result').style.display="block";    
}
</script>


Код

<table border="0" cellspacing="1" cellpadding="1" class="admin_int">
        <tr>
        <td class="admin_text" align="right">Имя</td><td class="admin_text"><input type="text" name="admin_name" id="admin_name" value="<?=$q3['admin_name']?>" /></td>
        <td rowspan="3" align="center" valign="middle" class="admin_text"><div id="saver_result"><img src="../images/ajax-loader.gif"></div></td>
        </tr>
        <tr>
        <td class="admin_text" align="right">Логин</td><td class="admin_text"><input type="text" name="admin_login" id="admin_login" value="<?=$q3['admin_login']?>" />        </td>
        </tr>
        <tr>
        <td class="admin_text" align="right">E-mail</td><td class="admin_text"><input type="text" name="admin_email" id="admin_email" value="<?=$q3['admin_email']?>" />        </td>
        </tr>
        <tr>
        <td class="admin_text" align="right">&nbsp;</td><td class="admin_text"><input type="button" class="admin_button" name="admin_save" id="admin_save" value="Сохранить" onClick="admin_save()" /></td>
        </tr>
        </table>


Это код обработчика
Код

<?php
require_once('../lib/JsHttpRequest/JsHttpRequest.php'); //подклучаем файл
$Js = new JsHttpRequest('windows-1251'); //кодировка ответов windows-1251

if(isset($_POST['action']) and $_POST['action']=='admin_save')
{
sleep(3);
$ad_name=mysql_escape_string($_POST['admin_name']);
$ad_login=mysql_escape_string($_POST['admin_login']);
$ad_email=mysql_escape_string($_POST['admin_email']);
$update='UPDATE `admin_prefs` SET `admin_name`="'.$ad_name.'", `admin_login`="'.$ad_login.'", `admin_email`="'.$ad_email.'"';
  if(mysql_query($update))
  {
  $GLOBALS['_RESULT']['saver_otvet']='Новые параметры успешно сохранены';
  }
  else
  {
  $GLOBALS['_RESULT']['saver_otvet']='Ошибка! Не удалось сохранить данные';
  }
}
?>


Здравствуйте, скажите пож. Я нажимаю на кнопку Сохранить и справа появляется картинка прелоадера, ну это просто гиф анимация. Когда обработчик выполнит сценарий, то картинка исчезает и в том слое появляется нужный текст. Но есля я тут же хочу опять отредактировать инфу и жму сохранить, то прелоадер не появляется, а спустя 3 сек(по слипу) появляется текст обработчика.

Вопрос 1. Почему когда обработчик возращает переменную и её сожержимое появляется в диве, картинка исчезает, ведь вроде innerHTML должен плюсовать инфу к той, что уже в диве, а в диве картинка. Но это впринципе на руку, картинка и должна по идее исчезать. Но вот почему она так исчезает.

Вопрос2. Как слелать, что бы при повторном нажатии сохранить - слой очищался от текста от прошлой обработки и снова показал прелоадер?
PM   Вверх
Nigel
Дата 29.8.2008, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: нет
Всего: 19



Цитата

ведь вроде innerHTML должен плюсовать инфу 

С чего вы это взяли? Плюсует appendChild, innerHTML заменяет.
Цитата

Как слелать, что бы при повторном нажатии сохранить - слой очищался 

innerHTML или removeChild, для картинки у вас функция showload
PM MAIL   Вверх
supercelt
Дата 29.8.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: 1
Всего: 1



Большое спасибо за информацию. Кое что проясняется. А как в Java Script вызывать фуенкцию из другой функции?
PM   Вверх
supercelt
Дата 29.8.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: 1
Всего: 1



Разобрался
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.