Показать сообщение отдельно
  #1 (permalink)  
Старый 20.01.2013, 16:45
Интересующийся
Отправить личное сообщение для alex55 Посмотреть профиль Найти все сообщения от alex55
 
Регистрация: 20.01.2013
Сообщений: 13

ajax ждет выполнения скрипта
Привет!
Есть пхп скрипт который работает например 20 секунд.
есть ajax - 1й запрос -вызов пхп скрипта, потом другая функция проверяет результат через другой скрипт (первый скрипт отписывается в базу о том сколько он выполнил , а второй пхп скрпт как раз берет из базы значение и выводит)

ПРоблема в том что первый запрос ждет выполнение пхп скрпта в 20 секунд , иногда выводит пустые сообщения а потом после 20 сек все ок..

function check_note()
{
str = document.getElementById('note').value;
if (str=="") { alert('EMPTY note'); return 0; } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=check_fast()
hash = document.getElementById('hash').value;
xmlhttp.open("GET","job.php?note="+str+"&hash="+hash,true);
xmlhttp.send();
}

function isnum( nn ) {
    return res = ( nn / nn ) ? true : false;
}


function check_fast() {
alert('check fast');
hash = document.getElementById('hash').value;
check_result =  document.getElementById('result');

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()

{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {         if(!isnum(xmlhttp.responseText)) {   check_result.innerHTML=xmlhttp.responseText; alert(xmlhttp.responseText); alert('ne chislo');return 0; }
    check_result.innerHTML=xmlhttp.responseText;
     alert(xmlhttp.responseText);
    setTimeout(check_fast, 2000)

    }
  }

hash = document.getElementById('hash').value;
xmlhttp.open("GET","check.php?hash="+hash,true);
xmlhttp.send();



}
Ответить с цитированием