У меня есть функция
function CheckFormItemUnical(col,colvalue){
var kod=document.getElementById('kod').value;
createRequest() ;
var url="proba8.php";
request.open("POST",url, false );
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
var data="kod="+kod+"&kol="+col+"&colvalue="+colvalue;
request.send(data);
request.onreadystatechange = function() {
if (request.readyState == 4) {
if (request.status == 200) {
alert(request.responseText);
if(request.responseText=="0"){rez= true;return rez;}
else{flagunical=false;rez= false;return rez;}
} else {
alert('error' + request.statusText);
}
}
}
return rez;}
Но так как запрос асинхронный то ответ приходит не всегда. иногда приходит пйстой ответ и функция из-за этого работает неправильно.
Эта функция тестирует значение на уникальность в базе данных в конкретной таблице по столбцу определяемому переменной
col.Если ответ с сервера приходит мгновенно все работает правильно. При задержке же ответа почему то responseText=""
а по логике функции это считается что тест не пройден.Так какответ- это количество строк в базе данных.ПРобовал делать синхронный запрос в отладчике вылазит предупреждение Что синхронный запрос в главном потоке- это устаревший метод. Подскажите как мне перестроить функциючтобы она правильноработала
серверный код
<?php
require"conect.php";
$data = array();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$kol=$_REQUEST['kol'];
$colvalue=$_REQUEST['colvalue'];
$sql="SELECT COUNT(*)
FROM clients
WHERE ";
$sql.=$kol;
$sql.=" =";
$sql.=$colvalue;
$sql.=" AND (kod <> ";
$sql.=$kod;
$sql.=")";
$stmt = $pdo->prepare($sql);
// echo $sql;
$stmt->execute();
$value = $stmt->fetchColumn(0);
echo $value;
?>