Ошибка «Синхронный XMLHttpRequest в основной нити является устаревшим» в некоторых браузерах. Как исправить?

В google chrome код запускается нормально. Но в firefox и в opera данный код не работает - выдает ошибку.

function GetAddFormAndOpenModal(form, promo, code){

		if(form){
			$.post('/personal/items/add/', 
			 { itemadd : form['itemadd'].value, submitform : form['submitform'].value, checkbutton : form['checkbutton'].value,
				promo : form['promo'].value, code : form['code'].value, lastchoose : form['lastchoose'].value },
			 function(html){
				$("#chooseAdd div.content").html(html);	
			}, "html");
		}else{
			$.post("/personal/items/add/?promo="+promo+"&code="+code, function(html){
				OpenModalWindow2('chooseAdd');
				$("#chooseAdd div.content").html(html);	
			}, "html");
		}
	}


Помогите! В чем ошибка?
  • Вопрос задан
  • 7684 просмотра
Решения вопроса 1
@horlon
Это косяк разработчиков браузера.
request.open('POST', "/personal/items/add/", true);
Поскольку "true" - то это асинхронное соединение, а не синхронное, получается, что браузер материться ошибочно. Лично у меня такое происходит, когда связь с сервером, куда долбиться request.open попросто недоступен, а если сервер доступен, то этих ошибок нет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kopylov_vlad
@kopylov_vlad Автор вопроса
Я переписал код на:
function GetAddFormAndOpenModal(form, promo, code){
	if(form){
	  var params = 'itemadd=' + encodeURIComponent(form['itemadd'].value) 
			+ '&submitform=' + encodeURIComponent(form['submitform'].value)
			+ '&checkbutton=' + encodeURIComponent(form['checkbutton'].value)
			+ '&promo=' + encodeURIComponent(form['promo'].value)
			+ '&code=' + encodeURIComponent(form['code'].value)
			+ '&lastchoose=' + encodeURIComponent(form['lastchoose'].value)
			;
		var request = new XMLHttpRequest(); 
		request.onreadystatechange = processRequestChange;
		request.open('POST', "/personal/items/add/", true); 
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.send(params); 
	}else{
		var request = new XMLHttpRequest(); 
		request.onreadystatechange = processRequestChange;
		request.open('GET', "/personal/items/add/?promo="+promo+"&code="+code, true);
		request.send(null);
	}
}


В chrome запускается хорошо, но в firefox все равно выводиться ошибка "Синхронный XMLHttpRequest в основной нити является устаревшим из-за его пагубного влияния на работу конечного пользователя."

При этом я же установил в request.open() true - что значит асинхронный запрос.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы