Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: xmlHttp.onreadystatechange - przypisanie funkcji z parametru
Forum PHP.pl > Forum > XML, AJAX > AJAX
nitek
witam,

stosunkowo niedawno zacząłem zabawę z Ajaxem i mam pytanie, czy dozwolone jest w jakiś sposób coś takiego:

Kod
xmlHttp.onreadystatechange=fun;

zamiast
Kod
xmlHttp.onreadystatechange=stateChanged;


gdzie fun, to parametr z funkcji. przy wywoływaniu change_content chciałbym dać w parametrze, która z funkcji ma zostać wykonana - stateChanged(), czy validate_temat().

Z góry dzięki za jakieś wskazówki.
Kod skryptu poniżej, funkcję wywołuje np.
Kod
onclick="change_content('main.php','img/01_main.jpg','stateChanged'); return false;">



Kod
var xmlHttp;
var img_strona;

function change_content(url,img_str,fun)
  {
  xmlHttp=GetXmlHttpObject();
    
  if (xmlHttp==null)
   {
   alert ("Browser does not support HTTP Request");
   return;
   }
  
  img_strona=img_str;
    
    var params = "";
  xmlHttp.onreadystatechange=stateChanged;
  //xmlHttp.onreadystatechange=fun;

  xmlHttp.open("POST",url,true);
    
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", params.length);
  xmlHttp.setRequestHeader("Connection", "close");

    
  xmlHttp.send(params);
  }

    
    
function stateChanged()
  {
    //alert('jest');
  if (xmlHttp.readyState==1)
   {
   document.getElementById("content_right").innerHTML='Proszę czekać...';
   document.body.style.cursor = "wait";
   }
  
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
   document.getElementById("content_right").innerHTML=xmlHttp.responseText;
   document.body.style.cursor = "default";
     document.getElementById("top_page_img").innerHTML="<img src='"+img_strona+"' alt='>";
   }
  }

    
function validate_temat()
  {
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
   {
   document.getElementById("temat").style.color="red";
   }
  }
    
    
function GetXmlHttpObject()
  {
  var xmlHttp=null;
  try
   {
   // Firefox, Opera 8.0+, Safari
   xmlHttp=new XMLHttpRequest();
   }
  catch (e)
   {
   //Internet Explorer
   try
    {
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
   catch (e)
    {
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
   }
  return xmlHttp;
  }
dr_bonzo
Mozesz, ale przekazac musisz funkcje
Kod
onclick="change_content('main.php','img/01_main.jpg',stateChanged); return false;">
-- bez apostrofow
a nie jej nazwe
Kod
onclick="change_content('main.php','img/01_main.jpg','stateChanged'); return false;">


A czemu nie zainteresujesz sie bibliotekami do JS/Ajaxa? jQuery, Prototype, mootools, czy inna - uprosci ci to prace z ajaxem i JSem
nitek
Dzięki!
O to mi właśnie chodziło, a na to rozwiązanie mimo kombinowania nie wpadłem winksmiley.jpg

Cytat(dr_bonzo @ 4.03.2009, 11:44:27 ) *
A czemu nie zainteresujesz sie bibliotekami do JS/Ajaxa? jQuery, Prototype, mootools, czy inna - uprosci ci to prace z ajaxem i JSem

Bawiłem się m.in. mootols'em, ale lubię wiedzieć jak to wszystko działa smile.gif Niektóre funkcje na moje potrzeby lepiej też napisać 'ręcznie'..

pzdr!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.