Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка при двух одновременных ajax запросах. (https://javascript.ru/forum/misc/52290-oshibka-pri-dvukh-odnovremennykh-ajax-zaprosakh.html)

vuler 11.12.2014 22:56

Ошибка при двух одновременных 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]+')');

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


Часовой пояс GMT +3, время: 06:08.