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 :: SetTimeout в ajax функции

 PHP.SU

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


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

> Без описания
Aligatro
Отправлено: 28 Декабря, 2013 - 01:27:08
Post Id


Новичок


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


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




Доброго времени суток, многоуважаемые форумчане =) В общем редактируя скриптик для ajax комментирования наткнулся на проблему, не могу поставить setTimeout внутри ajax функции перед ошибкой.

CODE (javascript):
скопировать код в буфер обмена
  1. function ajx_submitCommentSettings()
  2. {
  3.         jQuery('#commentform').live('submit', function(e){  
  4.                 e.preventDefault();  
  5.  
  6.                         if(jQuery("#Processing").length == 0 )
  7.                         var $message=jQuery('<span class="errorComments" id="Processing"></span>').appendTo("#commentform");                   
  8.                  jQuery.ajax({
  9.                          beforeSend:function(){
  10.                                 jQuery("#Processing").html('Комментарий скоро будет добавлен. Пожалуйста подождите...').show(0).delay(3000).hide(0);
  11.                                 return
  12.                          },
  13.                          type:'post',
  14.                          url:jQuery(this).attr('action'),
  15.                          data:jQuery(this).serialize(),
  16.                          dataType:'html',
  17.                          /*Задержка должна начинаться где то в этом месте =)*/
  18.                          error: function (xhr) {
  19.                                                 if(jQuery("#Processing1").length == 0 )
  20.                         var $message=jQuery('<span class="errorComments" id="Processing1"></span>').appendTo("#commentform");
  21.                          if(xhr.status==500){
  22.                                   jQuery("#Processing1").html(xhr.responseText.split('<p>')[1].split('</p>')[0]).delay(5000).hide(0);
  23.                                  }
  24.                                  else if(xhr.status=='timeout'){
  25.                                   jQuery("#Processing1").html('Error:Server time out,try again!').delay(5000).hide(0);
  26.                                  }
  27.                                  else{
  28.                                   jQuery("#Processing1").html('too fast error').delay(5000).hide(0); //too fast error
  29.                                  }
  30.                                
  31.                          },
  32.                        
  33.                
  34.  
  35.                 success:function(data){
  36.  
  37.                                 var link = document.location.href;
  38.  
  39.                                 jQuery.ajax({
  40.  
  41.                                    type: "GET",
  42.                                    cache: false,
  43.                                    url: link,
  44.                                    success: function(data){
  45.                                                 var oneval =jQuery(data).find('#comments');
  46.                                                 jQuery('#comments').html(oneval.html());                                               
  47.                                    }
  48.                                   }).done(function(){
  49.                                 });
  50.  
  51.                                 //ajx_submitCommentSettings();
  52.                         if(jQuery("#AddComment").length == 0 )
  53.                         var $message=jQuery('<span class="errorComments" id="AddComment"></span>').appendTo("#commentform");
  54.                                 jQuery("#AddComment").html('thank you'); //thank you
  55.                                 }
  56.                 });//end of ajax
  57.                  return false;
  58.  
  59.          });
  60. }

Сделать это я пытался 4 разными способами. И ни один из них не сработал, то ошибка синтаксиса, хотя там ее нет. То undefined функция, хотя имена совпадали =(
В принципе мне необязательно setTimeout, мне просто нужно сделать так, что бы текст "Ваш комментарий скоро будет добавлен. Пожалуйста подождите" не перекрывался ошибкой о невозможности добавить коммент.

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

Кстати, меня еще интересует, можно ли в скрипт вставить стили для элементов вида <style></style>, а то не очень хочется плодить http запросы ради файла css в пару строк =)

P.s.s Если что, вот стили =)

CODE (html):
скопировать код в буфер обмена
  1. #Processing {
  2. position: fixed;
  3. top: 0;
  4. padding: 10px 50px 10px 50px;
  5. left: 35%;
  6. background: rgba(73, 71, 71, 0.54);
  7. border-radius: 5px;
  8. margin-top: 5px;
  9. color: #fff;
  10. font-weight: 600;}
  11.  
  12. #AddComment {
  13. position: fixed;
  14. top: 0;
  15. padding: 10px 50px 10px 50px;
  16. left: 35%;
  17. background: rgba(80, 138, 52, 0.56);
  18. border-radius: 5px;
  19. margin-top: 5px;
  20. color: #fff;
  21. font-weight: 600;}
  22.  
  23. #Processing1 {
  24. position: fixed;
  25. top: 0;
  26. padding: 10px 50px 10px 50px;
  27. left: 35%;
  28. background: rgba(185, 52, 52, 0.64);
  29. border-radius: 5px;
  30. margin-top: 5px;
  31. color: #fff;
  32. font-weight: 600;}
 
 Top
Deonis
Отправлено: 28 Декабря, 2013 - 06:48:44
Post Id



Посетитель


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


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




По первому вопросу:
CODE (javascript):
скопировать код в буфер обмена
  1. /* ... */
  2. error: function (xhr) {
  3.     setTimeout(function(){
  4.         alert('Хьюстон! У нас проблемы!');
  5.     }, 2000);
  6. }
  7. /* ... */
По второму вопросу: Зачем вам вообще подгружать стили, если они очень хорошо себя чувствуют, заранее прописанными где-нибудь в файле style.css?
 
 Top
Aligatro
Отправлено: 28 Декабря, 2013 - 15:47:28
Post Id


Новичок


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


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




Deonis, спасибо большое, Ваше решение помогло, получился конечно лишный код, но все же работает =)

Почему я не хочу в стандартные стили засунуть стили ajax js? Просто, я хотел бы сделать это все в виде отдельного плагина для wordpress, что бы его можно было запаковать, сложить и забыть, до первой необходимости прикрутить ajax к комментариям на очередном сайте =) Зачем его потом таскать, встраивать, насиловать functions.php если можно просто написать админ часть с вызовом js и редактированием названий селекторов -)

Кстати по этому поводу меня интересует еще 2 вопроса.
1 - Можно ли сделать так, что бы в js передавался id класса, который пользователь изменит в админке плагина?
2 - Можно ли сделать так, что бы скрипт подключался только на странице комментариев а не по всему сайту =)

Большое спасибо =)
 
 Top
Deonis
Отправлено: 28 Декабря, 2013 - 16:09:00
Post Id



Посетитель


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


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




Aligatro пишет:
получился конечно лишный код, но
Это необходимость в связи с поставленной задачей, а лишний код это:
PHP:
скопировать код в буфер обмена
  1. if(true && is_bool(true)){
  2.         echo 'It is realy true!';
  3. }
Что касается плагинов, если мы говорим об универсальном программном модуле, то далеко не всегда критерием той самой универсальности, является смешивание всего в одну кучу. Если вы рассматривали чужи проекты, то должны были обратить внимание, что подавляющее их большинство разделены на определенные логические части: серверный скрипт, скрипт клиентский, стили и т.д. Такое поведение позволяет быть не только универсальным, но и гибким в отношении индивидуальных его настроек под определенные задачи. Но это мое личное мнение.
Aligatro пишет:
1 - Можно ли сделать так, что бы в js передавался id класса, который пользователь изменит в админке плагина?
Смотрите этот пример.
Aligatro пишет:
Можно ли сделать так, что бы скрипт подключался только на странице комментариев а не по всему сайту =)
Конечно. Проверяете наличие элемента, к которому собираетесь подключать плагин. Пример в догонку.

(Отредактировано автором: 28 Декабря, 2013 - 16:12:31)

 
 Top
Aligatro
Отправлено: 28 Декабря, 2013 - 20:52:48
Post Id


Новичок


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


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




Deonis пишет:
Это необходимость в связи с поставленной задачей

Как бы там не было, я еще быдло-кодер =))

Deonis пишет:
Что касается плагинов, если мы говорим об универсальном программном модуле, то далеко не всегда критерием той самой универсальности, является смешивание всего в одну кучу. Если вы рассматривали чужи проекты, то должны были обратить внимание, что подавляющее их большинство разделены на определенные логические части: серверный скрипт, скрипт клиентский, стили и т.д. Такое поведение позволяет быть не только универсальным, но и гибким в отношении индивидуальных его настроек под определенные задачи. Но это мое личное мнение.

Я с Вами абсолютно согласен =) Но проблема в том, что ради 3-x стилей нужно подгружать отдельный файл, который создает (как мне кажется) лишнюю нагрузку. Но в целом я абсолютно согласен =)

Deonis, еще раз огромное Вам спасибо за помощь и примеры. Но все же я не до конца понимаю как бы это сделать =) Если Вы не против, можно я опишу пошагово, что как мне кажется необходимо сделать, а Вы скажите в правильном ли направлении я думаю -)

1 - Добавляем пункт меню в админку wp;
2 - Создаем переменную и связываем ее с textarea в админке;
3 - В самом скрипте при помощи get вызываем эту функцию или переменную из скрипта (я просто еще в ajax не разобрался);
4 - Добавляем вместо класса (по умолчание comments) эту переменную?

Большое спасибо за ответы =)
 
 Top
Deonis
Отправлено: 29 Декабря, 2013 - 05:37:27
Post Id



Посетитель


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


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




Aligatro пишет:
я опишу пошагово, что как мне кажется необходимо сделать
Для того, чтоб можно было что-либо советовать, желательно знать не пошаговое выполнение ваших действий, а описание того плагина, который вы хотите соорудить. Пусть это будет описано примитивно, но уловив суть, можно будет выстроить логическую цепочку необходимых действий. А так, мне абсолютно не ясно: зачем добавлять "пункт меню в админку", как это связано с "textarea", зачем мы "добавляем вместо класса" какую-то созданную ранее переменную и т.д.
И еще один момент... Не буду говорить о своих некоторых сомнениях, но на всякий пожарный, окиньте взглядом эту статейку. В любом случае, для начинающих не помешает.
 
 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