Всем доброго времени суток!
Есть следующая ситуация: создаю специальную функцию которая при вызове создает объект XMLHttpRequest() и шлет определенные запросы на сервер.
далее вызываю эту функцию дважды
alert('запрос на запись');
sendAnsServ(('insertParts.php?name='+ mas_nameM + '&country=' + mas_country + '&idMode=newMark'), 8, '');
alert('запрос на выборку');
sendAnsServ(('insertParts.php?name='+ mas_nameM + '&idMode=selMark'), 8, '');
и вижу странную картину при пошаговом выполнении скрипта, функция как и положено создает запрос на сервер, а потом, не дождавшись от сервака ответа, завершает свою работу и выполнение скрипта переход ко второму вызову этой функции.
код функции примерно такой:
function sendAnsServ(pId, mode, id)
{
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', pId + '&mode=' + mode, true);
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{
...
if(mode == 8)
{
document.getElementById('resServ').value = xmlhttp.responseText;
}
}
}
}
xmlhttp.send(null);
}
как сделать чтобы функция не завершалась до момента получения ответа с сервера?
если написать что-то типа:
function sendAnsServ(pId, mode, id)
{
//alert(pId + " " + mode + " " + id);
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', pId + '&mode=' + mode, true);
var flag = true;
while(xmlhttp.readyState != 4)
{
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{
...
if(mode == 8)
{
document.getElementById('resServ').value = xmlhttp.responseText;
}
}
}
}
if(flag)
{
xmlhttp.send(null);
flag = false;
}
}
}
то это приводит к циклу который грузит браузер, да и эксплорер постоянно предлагает прекратить выполнение скриптов. Помогите решить проблему пожалуйста
