Тема: setTimeout в ajax
Показать сообщение отдельно
  #1 (permalink)  
Старый 28.12.2013, 03:21
Интересующийся
Отправить личное сообщение для Aligatro Посмотреть профиль Найти все сообщения от Aligatro
 
Регистрация: 03.12.2013
Сообщений: 15

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

function ajx_submitCommentSettings()
{
	jQuery('#commentform').live('submit', function(e){  
		e.preventDefault();  

			if(jQuery("#Processing").length == 0 )
			var $message=jQuery('<span class="errorComments" id="Processing"></span>').appendTo("#commentform");			
		 jQuery.ajax({
			 beforeSend:function(){ 
				jQuery("#Processing").html('Комментарий скоро будет добавлен. Пожалуйста подождите...').show(0).delay(3000).hide(0);
				return
			 },
			 type:'post',
			 url:jQuery(this).attr('action'),
			 data:jQuery(this).serialize(),
			 dataType:'html',
			 /*Задержка должна начинаться где то в этом месте =)*/
			 error: function (xhr) {
			 			if(jQuery("#Processing1").length == 0 )
			var $message=jQuery('<span class="errorComments" id="Processing1"></span>').appendTo("#commentform");
			 if(xhr.status==500){
				  jQuery("#Processing1").html(xhr.responseText.split('<p>')[1].split('</p>')[0]).delay(5000).hide(0); 
				 }
				 else if(xhr.status=='timeout'){ 
				  jQuery("#Processing1").html('Error:Server time out,try again!').delay(5000).hide(0); 
				 }
				 else{ 
				  jQuery("#Processing1").html('too fast error').delay(5000).hide(0); //too fast error
				 }
				
			 },
			
 		

		success:function(data){ 

				var link = document.location.href;

				jQuery.ajax({

				   type: "GET",
				   cache: false,
				   url: link, 
				   success: function(data){ 
						var oneval =jQuery(data).find('#comments');
						jQuery('#comments').html(oneval.html());						
				   }
				  }).done(function(){ 
				});

				//ajx_submitCommentSettings();
			if(jQuery("#AddComment").length == 0 )
			var $message=jQuery('<span class="errorComments" id="AddComment"></span>').appendTo("#commentform");
				jQuery("#AddComment").html('thank you'); //thank you 
				}
		});//end of ajax
		 return false;

	 });
}

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

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

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

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

#Processing {
position: fixed;
top: 0;
padding: 10px 50px 10px 50px;
left: 35%;
background: rgba(73, 71, 71, 0.54);
border-radius: 5px;
margin-top: 5px;
color: #fff;
font-weight: 600;}

#AddComment {
position: fixed;
top: 0;
padding: 10px 50px 10px 50px;
left: 35%;
background: rgba(80, 138, 52, 0.56);
border-radius: 5px;
margin-top: 5px;
color: #fff;
font-weight: 600;}

#Processing1 {
position: fixed;
top: 0;
padding: 10px 50px 10px 50px;
left: 35%;
background: rgba(185, 52, 52, 0.64);
border-radius: 5px;
margin-top: 5px;
color: #fff;
font-weight: 600;}

Последний раз редактировалось Aligatro, 28.12.2013 в 03:24.
Ответить с цитированием