код в xmlhttp.readyState == 4 не выполняется - PullRequest
0 голосов
/ 30 декабря 2010
function download() {
    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() 
    {   //alert(xmlhttp.readyState);
        if(xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            alert (xmlhttp.responseText);
        }   
    }

    xmlhttp.open("GET","import.php?file="+document.getElementById('uploaded_file').value,false);
    xmlhttp.send(); 

  //  location.reload(true);
}

если я поставлю alert и отслеживаю xmlhttp.readyState, тогда он показывает мне, что его статус становится равным 4, и он входит в оператор if, если я не отслеживаю его с предупреждением, он не входит в оператор if но я знаю, что import.php работает, потому что я вижу изменения в базе данных. Я не знаю, что происходит ... может кто-нибудь помочь.

Спасибо

1 Ответ

1 голос
/ 30 декабря 2010

это потому, что location.reload(true); перезагружает страницу и не ожидает завершения вызова xmlhttp

UPDATE: попробуйте установить третий параметр в вызове xmlhttp.open на true

из документов:

Булевый индикатор того, является ли вызов асинхронный. По умолчанию True (звонок возвращается сразу). Если установлено значение True, прикрепите обратный вызов свойства onreadystatechange так что вы можете сказать, когда отправить звонок завершен.

http://msdn.microsoft.com/en-us/library/ms757849%28v=vs.85%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...