[js] ajax readyState nie działa ?

0

mam taki kod:

<script type="text/javascript">
function GetXmlHttpObject(){
    
if (window.XMLHttpRequest)
  return new XMLHttpRequest();
else if (window.ActiveXObject)
  return new ActiveXObject("Microsoft.XMLHTTP");
 return null;
}  

function stateChanged(type){
  alert('cos1');
  if(xmlhttp.readyState==4){

   alert('cos2');
    
  }
}

function reLoad(go_to, type){

  document.getElementById('loading').style.display = 'block';
  var url = "<?php echo APP_WEB_PATH; ?>/mw/mw.php?mw=" + go_to;
  xmlhttp=GetXmlHttpObject();
  xmlhttp.onreadystatechange=stateChanged(type);
  xmlhttp.open("GET", url,true);
  xmlhttp.send(null);

}
reLoad('1', '1');
</script>
 

url jest poprawny bo gdy wejde w http://localhost/mw/mw.php?mw=1 zwraca sie to co chce,
ale po odpaleniu tego skryptu wyswietla sie tylko alert 'cos1'

mam napisana tak samo funkcje do dynamicznej rejstracji i dziala a to nie wiem czemu nie dziala ?

0

xmlhttp.onreadystatechange=stateChanged(type);

To jest przypisanie WYNIKU funkcji stateChanged(type) a nie jej samej jako funkcji obsługi zmiany stanu.

alert('cos1') i cała reszta wykonuje się przed wysłaniem żądania.

0

bardzo dziwne, bo jakoś to działa normalnie :

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
 {
 return new XMLHttpRequest();
 }
else if (window.ActiveXObject){ 
  
 return new ActiveXObject("Microsoft.XMLHTTP");
                         
} 
return null;
}  

function stateChanged1()
{
if (xmlhttp.readyState==4)
{
if(xmlhttp.responseText == 0){
document.getElementById('name').style.color = 'green';
document.getElementById('mail').style.color = 'green';
document.getElementById('name').innerHTML = 'Poprawne';
document.getElementById('mail').innerHTML = 'Poprawne';
document.forms['form'].send.disabled=false;
}          
else if(xmlhttp.responseText == 1){
document.getElementById('name').style.color = 'red';
document.getElementById('name').innerHTML = 'Nazwa jest już w użyciu !';
document.getElementById('mail').style.color = 'green';
document.getElementById('mail').innerHTML = 'Poprawne';
document.forms['form'].send.disabled=true;                            
}
else if(xmlhttp.responseText == 2){    
document.getElementById('name').style.color = 'green';
document.getElementById('mail').style.color = 'red';
document.getElementById('name').innerHTML = 'Poprawne';
document.getElementById('mail').innerHTML = 'Email jest już w użyciu !';
document.forms['form'].send.disabled=true;                              
}
else if(xmlhttp.responseText == 3){
document.getElementById('name').style.color = 'red';
document.getElementById('mail').style.color = 'red';
document.getElementById('name').innerHTML = 'Nazwa jest już w użyciu !';
document.getElementById('mail').innerHTML = 'Email jest już w użyciu !';
document.forms['form'].send.disabled=true;    
}

}
}

function showPart1(login, mail)
{
xmlhttp=GetXmlHttpObject();
var url="<?php echo APP_WEB_PATH; ?>/mw/ajax/check.php?login=" + login + "&mail=" + mail;
xmlhttp.onreadystatechange=stateChanged1;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
0

Bo tu przypisujesz funkcję a nie jej wynik.

var x = funkcja(); // przypisujemy wynik funkcji do x
var y = funkcja; // przypisujemy funkcję do y, więc y można wywołać [np. y() ].

Przyjdzie bswierczyński to pewnie Ci wykład strzeli na pół godziny czytania ;-)

0

dobra juz se poradzilem ...
mozna bylo powiedziec zebym type zrobil jako zmienna globalna, ale sie sam domyslilem po glowkowaniu

1 użytkowników online, w tym zalogowanych: 0, gości: 1