Доброе время суток
Заполняем форму, перед сабмитом проверяем. Одно поле в форме, должно быть уникальным. Его отправляем ajax`ом скрипту, скрипт возвращает true или false. Если false, то поле маркируем как ошибочное и не сабмитим. Кажется просто?
Проблема в том что запрос выполняется асинхронно, поле помечается как ошибочное, т.к. результат undefined - не успевает обработаться запрос. В консоле ошибка: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check
xhr.spec.whatwg.org.
Но так же выводит что:
'translit check is: true';
'value is: выводит значение поля';
'result is: undefined'
вот код:
//валидатор
result = checkTranslit($('#translit').val());
if (result !== 'true') {
errorArray.push("translit");//кладем поле в массив с ошибками
console.log('value is: ' + $('#translit').val() + '\n');
console.log('result is: ' + result + '\n');
}
//запрос
function checkTranslit(translit){
$.ajax({
url: 'http://site.com/scripts/checkTranslit.php',
data: {'translit': translit},
type: 'POST',
dataType: 'json',
async: false,
success: function(data){
answer = JSON.stringify(data);
console.log('translit check is: ' + answer.result + '\n');
return answer.result;
},
error: function(error){
err = JSON.stringify(error);
console.log('error is: ' + err.result + '\n');
return err.result;
}
});
}
Как заставить запрос работать синхронно? Или блокировать ГУЙ на время выполнения? Куда копать?