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]   

> Описание: jquery
filkeith
Отправлено: 18 Октября, 2011 - 15:48:18
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


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




В общем, ошибки какие либо я передаю через переменную $_SESSION[error] и тогда на любой странице вижу если что то не так на предыдущей, на каждой странице было
. Но вот я решил я сделать всё с JS что бы плавно появилось и пропало сразу на странице, на которой произошла ошибка.
Написал такую вещь на JS
CODE (javascript):
скопировать код в буфер обмена
  1. function errorchk(){
  2.         $.ajax({
  3.         url: './ajax/error.ajax.php',
  4.         success:function(response){
  5.                 $("#error").prepend(response);
  6.                 $("#error center:first-child").fadeIn(500);
  7.                 $('#error').delay(1600).fadeOut(500, function(){$('#error').remove();});}
  8.                 });
  9.     return false;
  10. };

в error.ajax.php всё просто
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         session_start();
  3.         echo '<div class=\'error\'><center style="display:none">'.$_SESSION[error].'</center></div>';
  4. unset($_SESSION[error]);
  5. ?>

Вывод появляется между
Ну и собственно везде где можно на какю либо кнопку ткнутть и т.д. в onclick добавил errorchk();
Кога страница загрузилась, делаем гадость и ошибка отображается и исчезает. Делаем гадость 2-3-4.... ничего не происходит. Если перезагрузить страничку то снова 1 раз работает последующие нет.

(Отредактировано автором: 18 Октября, 2011 - 15:50:51)

 
 Top
illy
Отправлено: 18 Октября, 2011 - 15:51:55
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




значит в выводе ошибки выводит что-то лишнее что "ломает" скрипт
дай архив потестить


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
filkeith
Отправлено: 18 Октября, 2011 - 16:01:35
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


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




illy пишет:
значит в выводе ошибки выводит что-то лишнее что "ломает" скрипт
дай архив потестить

какой архив?
я в js не очень, может это из-за того что у меня на кнопки навешено много функций?
например есть такие
CODE (html):
скопировать код в буфер обмена
  1. <input type="button" value="Отправить" class='btn' onclick="doit( document.getElementById('message').value,'wall');errorchk();"/>

или даже такие
CODE (html):
скопировать код в буфер обмена
  1. <input type="button" class='btn' value="Отправить" onclick="mail( document.getElementById('to').value,document.getElementById('title').value,document.getElementById('text').value,'message');$('#popup_mail').togglePopup(); errorchk();return false;"/>

Либо я с div'ами напутал, что у меня есть и class="error" и id="error"

(Отредактировано автором: 18 Октября, 2011 - 16:06:46)

 
 Top
illy
Отправлено: 18 Октября, 2011 - 16:09:28
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




class="error" и id="error" это норм.
а ты перед выводом ошибки сделай (не помню как пишется) striphtmlentities htmlstriptags
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $er=preg_replace('#[^a-zA-Z]*#','',$_SESSION[error]);
  3. echo '<div class=\'error\'><center style="display:none">'.$er.'</center></div>';
  4. unset($_SESSION[error]);
  5. ?>


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
Stasnislav
Отправлено: 18 Октября, 2011 - 16:27:04
Post Id



Гость


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


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




Я могу ошибаться, но может не стоит убивать переменную unset($_SESSION[error]); ? Улыбка


-----
Программисты на работе общаются двумя фразами: «непонятно» и «вроде работает».
 
 Top
Viper
Отправлено: 18 Октября, 2011 - 16:28:10
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




Млаа....
json в ответ через json_encode. затем в нужном месте не через prepend а через html тулите этот ответ. только для начала parseJSON для ответа.
и вы тулите $('#error').remove(); А ничего что remove удаляет ваш div из DOM!?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
filkeith
Отправлено: 18 Октября, 2011 - 18:10:06
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


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




Viper пишет:
Млаа....
json в ответ через json_encode. затем в нужном месте не через prepend а через html тулите этот ответ. только для начала parseJSON для ответа.
и вы тулите $('#error').remove(); А ничего что remove удаляет ваш div из DOM!?

вот про remove я думал, если ставить hide() тоже самое.
 
 Top
Viper
Отправлено: 19 Октября, 2011 - 07:22:16
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




filkeith попробуйте не через onclick а через
CODE (javascript):
скопировать код в буфер обмена
  1. $('.err').live('click', function(){...
и для нужных елементов задайте класс err


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
illy
Отправлено: 19 Октября, 2011 - 08:38:58
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


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




попробуй ещё вместо echo $_SESSION[error]
echo '123sfыпиав№;65fdgdgёЁ/';


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
filkeith
Отправлено: 19 Октября, 2011 - 09:42:13
Post Id



Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Июль 2011  


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




Viper пишет:
Млаа....
json в ответ через json_encode. затем в нужном месте не через prepend а через html тулите этот ответ. только для начала parseJSON для ответа.
и вы тулите $('#error').remove(); А ничего что remove удаляет ваш div из DOM!?

Всё таки про remove() вы были правы, сейчас поковырялся и сделал через hide и очисткой элемента что бы не накладывались один к другому. В итоге хз правильно или нет но вышло вот так:
CODE (javascript):
скопировать код в буфер обмена
  1. function errorchk(){
  2.         $.ajax({
  3.         url: './ajax/error.ajax.php',
  4.         success:function(response){
  5.                 $('#error').empty();//добавил очистку элем иначе с каждым нажатием их показывалось всё больше и больше
  6.                 $("#error").prepend(response).show();//тут сделал шоу
  7.                 $("#error center:first-child").fadeIn(500);
  8.                 $('#error').delay(1600).fadeOut(500, function(){$('#error').hide();});//а тут вместо ремув поставил хайд
  9.                 }
  10.                 });
  11.     return false;
  12. };

Всем спасибо
 
 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