readyState = 1 folyamatosan
Lassan egy éve használom ugyan azt a JS fájlt, hogy kezeljem a szerver és a browser közti kapcsolatot. Eddig ment is, most átalakítottam az oldalt, de a JS részeket nem bántottam - mindössze az URLT írtam át, amit meghív. Azóta a readystate, történjék bármi, 1 és nincs továbblépés.
Ez kezeli a csatornát:Ez hívja meg (fnc):Ez pedig a responder() fnc, ami a readyState-et figyeli és reagálja le:Az add_text a target id-jű elem innerHTML-jét változtatja meg második értékre.
A clear_text ugyan ezt csinálja, csak nem bővíti a tartalmat, hanem először kiüríti.
A gyakorlatban ez: admin.nhir.hu -> bal oldali belépés modul. Ezt hívja meg: ajax.nhir.hu
Az adatküldés azért post, mert a szerver oldalon be van állítva ez (és még néhány domain ugyan így rá van irányítva az oldalra, ezért nagyjából semmi nem él, ami GET):Az igazat megvallva már egy-másfél napom ment rá, hogy meglássam az -amúgy feltehetőleg evidenst, de egyszerűen nem látok hibát (biztosan van!), legalábbis olyat nem, amit felismernék.
Köszönöm előre is a segítséget.
■ Ez kezeli a csatornát:
function GetXmlHttpObject() //csatorna keszites, vagy hibauzenet
{
if(window.XMLHttpRequest)
{
//IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if(window.ActiveXObject)
{
/* // code for IE6, IE5 */
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
function open_std(mit_nyit, hova) //egyszeru behivasa egy filenak
{
xmlhttp=GetXmlHttpObject();
if(xmlhttp==null)
{
clear_text(hova, '<br>XMLHTTP support kéne (ie6, 7, 8, FF1, 2, 3, FF for Mac, Safari böngészõk a nyerõk), anélkül nem fog futni a rendszer!');
return;
}
var url='http://ajax.nhir.hu/';
url=url+"&oti="+mit_nyit; //ezt kikeresi adatbazisbol a szerver oldal, majd az eredmeny szerint nyit function()-t; //
clear_text(hova, '<center><img src="/___common/templates/images/ajax-loader.gif" width="150px;" style="z-index: 10;"><br>Kérés folyamatban.</center>');
xmlhttp.open('POST',url);
xmlhttp.send(null);
if(navigator.appName=='Microsoft Internet Explorer')
{
xmlhttp.onreadystatechange=new Function(responder(hova));
//this.requester.onreadystatechange = new Function(this.actionOnReady());
}
else
{
xmlhttp.onreadystatechange=responder(hova);
}
}
function responder(target) //eredmeny kiiratas
{
add_text(target, '<center><strong>Státuszfeldolgozás folyamatban... Várjon!</strong> <i>('+target+')</i></center><br>');
if(xmlhttp.readyState==0)
{
add_text(target, '<center><strong>Nem inicializálódott a kapcsolat!</strong></center><br>');
}
if(xmlhttp.readyState==1)
{
add_text(target, '<center><strong>Kapcsolat letrejott</strong></center><br>');
}
if(xmlhttp.readyState==2)
{
add_text(target, '<center><strong>Kérés elküldve</strong></center><br>');
}
if(xmlhttp.readyState==3)
{
add_text(target, '<center><strong>Kérés folyamatban</strong></center><br>');
}
if(xmlhttp.readyState==4)
{
add_text(target, '<br><center>Kérés lefuttattva</center><br>');
clear_text(target, xmlhttp.responseText);
}
}
A clear_text ugyan ezt csinálja, csak nem bővíti a tartalmat, hanem először kiüríti.
A gyakorlatban ez: admin.nhir.hu -> bal oldali belépés modul. Ezt hívja meg: ajax.nhir.hu
Az adatküldés azért post, mert a szerver oldalon be van állítva ez (és még néhány domain ugyan így rá van irányítva az oldalra, ezért nagyjából semmi nem él, ami GET):
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/_server
RewriteCond /url/to/webroot/%{REQUEST_URI} !-f
RewriteCond /url/to/webroot/%{REQUEST_URI} !-d
RewriteRule ^(.*) /index.php?$1 [L]
Köszönöm előre is a segítséget.
Teszt
Igen
Firebug segítségével megnéztem, a kérés 200 OK -kal tér vissza, de semmit nem kap. A body üres ezen a csatornán keresztül megkérve. Szerveroldalon accessLog szerint sem történik semmi. Ha böngészőből hívom meg közvetlenül, akkor lefut viszont.
Ezt a headet adja vissza Firebug szerint:
saját hibám, saját meggondolatlanságom...
A meghívás az admin aldomanról ment az ajax aldomainre...
A szerveren ezek egy és ugyan azon fájlt takarják, mint amolyan core-t, viszont az ajaxnak mégis csak két különböző, és ez annyira nem működő képes...
Ja, és a forráskód felül, ennyi javítással 2. 15-sor nál: