Показать сообщение отдельно
  #1 (permalink)  
Старый 11.12.2014, 22:56
Кандидат Javascript-наук
Отправить личное сообщение для vuler Посмотреть профиль Найти все сообщения от vuler
 
Регистрация: 16.02.2012
Сообщений: 109

Ошибка при двух одновременных ajax запросах.
Добрый день.
Не могу понять как можно исправить данную ошибку. Оба запроса работают идеально по отдельности, но при одновременном вызове дается сбой.
Первый запрос - обновление чата каждые N секунд. Пускается в цикле.
function refresh_chat(){
	clearTimeout(refresh_time);
	block=$('.mini_chat');
	room=block.find('.js_room').val();
	last_id=block.find('.msg:last').attr('msg_id');
	if (full_null(last_id)) last_id=1;
	
	$.ajax({
		  type: 'POST',	
		  dataType: 'json',
		  url:"../php_scripts/chat_tools.php",
		  context:this,
		  data:({last_id:last_id,room:room, task:"chat_refresh"}),
		  success: function(data){
				block=$('.mini_chat');
				if (data.body!=""){
					msg_block=block.find('.msg_block');
					scroll=scroll_check_end_position(msg_block);
					msg_block.append_fadeIn($(data.body));
					if (scroll==true)
						scroll_to_end(msg_block);
				}
				room_block=block.find('.js_room');
				console.log(block);
				patern=/[(][0-9]+[)]/;
				for (var i in data.online) {
				//alert(i);
				select_block=room_block.find('[value="'+i+'"]');
				//alert(select_block.length);
				str=select_block.html().replace(patern,'('+data.online[i]+')');
				select_block.html(str);
				}
				//Обновляем онлайн комнат.
				//chat_room_refresh(block,data);
				refresh_time=setTimeout(refresh_chat, CHAT_REF_TIME);	
		  }
	})
}

Второй запрос - выбор категории новостей по группам.
function news_change_block(){
	new_block=$(this).val();
	cur_select=$(this).attr('block');
	if (cur_select=='company') cur_select=1;
	if (cur_select=='block') cur_select=0;
	block=$(this).closest('.full_news_block');
	bloking_elem(block,0.2,'loading');
	href=parseURL(document.location.href);
	href.data.where=obj_to_arr(href.data.where);
	href.data.where[cur_select][1]=new_block;
	if (cur_select==0) href.data.where[1][1]="";
	
	href.data.cp=1;
	new_href=href.link+'?'+serialize(href.data)
	history.pushState(null, null, new_href);
	
	$.ajax({ type: 'POST',dataType: 'json', url:"../php_scripts/catalogs_tools.php",
			data:({href:new_href,task:"news_refresh_full_news_block"}),context: block,
			complete: function(){unbloking_elem(block);},
			success: function(data){
					block.html($(data.news_block).unwrap());
			}})
	
	
	



}


$(document).ready(function() {




$('.news_mini_block').on('change','.js_news_block_select',news_select_company);
$('.full_news_block').on('change','.js_block_selector',news_change_block);


})

Ошибку выдает код чата(1-й) на строке.
room_block=block.find('.js_room');
Тут с block - все нормально, но вот room_block уже левый.
Сама ошибка:

TypeError: select_block.html(...) is undefined
str=select_block.html().replace(patern,'('+data.on line[i]+')');

Может кто сталкивался с подобным? и какие пути решения существуют?
Ответить с цитированием