Autor Zpráva
loyza
Profil
Zdravím,
mám Javascriptový kód:

function handleServerResponse(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
xmlResponse=xmlHttp.responseXML;
xmlDocumentElement=xmlResponse.documentElement;
document.getElementById("Imesto").options.length=0;
mestoarray=xmlResponse.getElementsByTagName("mesto");
oSeznam=document.getElementById("Imesto");
for(var i=0;i<mestoarray.length;i++){
var id=mestoarray.item(i).firstChild.textContent.toString();
var mesto=mestoarray.item(i).lastChild.textContent.toString();
Omesto=document.createElement("option");
Omesto.setAttribute("value",id);
OmestoT=document.createTextNode(mesto);
Omesto.appendChild(OmestoT);
oSeznam.appendChild(Omesto);
}
}
}
}

Tento kód mi v Opeře normálně funguje, ale v IE mi nefunguje. Nevíte někdo proč?? Předpokládám, že je tam nějaká metoda, kterou IE nepodporuje, ale nevím která a ani nevím kde bych to našel. Ještě trochu popis o co jde:
Mám v dokumentu dva selecty vedle sebe, seznam krajů a seznam měst v daném kraji a chtěl bych při změně kraje, aby se načetli z databáze města patřící do daného kraje a vypsaly se do druhého selectu. Select se jmenuje Imesto. Předpokládám, že tehle řádek vymaže celý select:
document.getElementById("Imesto").options.length=0;
a ten další kód do něho načte ty města, ale to už v IE neproběhne, opera to přechroustá celé a města načte, ale IE pouze vymaže select a města tam už nepřidá. Jenom ještě pro jistotu uvedu jak vypadá ten XML dokument, ze kterého se data načítají, ale to by myslím mělo být irelevantní, ale pro jistotu:

<response>
<mesto>
<id>
1
</id>
<nazev>
Praha
</nazev>
</mesto>
<mesto>
<id>
2
</id>
<nazev>
Brno
</nazev>
</mesto>
<mesto>
<id>
3
</id>
<nazev>
Ostrava
</nazev>
</mesto>
</response>
habendorf
Profil
IE se občas nelíbí (IMHO) proměnné pojmenované klíčovými slovy. Zkus přejmenovat proměnnou id.
peta
Profil
loyza
co vypisuje JS konzola IE?
loyza
Profil
Díky za rady.
Jo tak problém je lokalizován. Předtím jsem si toho nevšiml (nevěděl jsem o nějaké konzoli v IE), až když peta napsal o tej konzoli. Píše, že:
mestoarra.item(...).firstChild.textContent má hodnotu null nebo není objekt

Takže asi to nezná textContent, zkusím někde zjistit lepší způsob jak ta data vydolovat.
Leo
Profil
On taky textContent nic neni, co treba nodeValue? Leo
loyza
Profil
Tak už jsem to pohledal, klasicky funguje v každém prohlížeči něco jiného. Podle této stránky v IE existuje vlastnost text a v FF existuje vlastnost textContent, opera zná obojí. tak sem tam vrznul podmínku a ať si každý vybere to co zná. Jen teďka doufám, že neexistuje prohlížeč, který by neznal ani jedno. I když, jestli existuje tak ať existuje, bude se to načítat pomalu bez Javascriptu.
Díky všem za rady.
loyza
Profil
tak ještě jeden dotaz:
ten vrchní kód je pro to aby zpracoval odpověď, která přišla ze servru, ale teď mám problém na ten server poslat požadavek, používám tuhle metodu:
xmlHttp.open("GET","http://localhost/kudera/ziskejkraj.php?name="+name ,true);

pokud je tam localhost tak vše funguje jak má, ale jenom u mě na počítači, pokud se na tu stránku podívá někdo z jiného důvodu tak mu to celkem logicky nefunguje, nahradil jsem tedy slovo localhost svojí ipadresou a na mém počítači v IE vše funguje správně, ale to je to jediné, protože v ostatních prohlížečích to nefunguje a z jiného prohlížeče to také nejde, zkusil jsem tedy ve firefoxu zjistit proč to nejde a hlásí to následující chybu:
Odepření přístupu při volání metody XMLHttpRequest.open
hledal jsem na internetu proč by něco takového měl hlásit, al enic jsem nenašel, nevíte někdo??
peta
Profil
loyza
neni script neni mozne zjistit problem. Odkaz na stranku?
pravdepodobne stejny problem jako s content. Jiny prohlizec, jiny request. Zkus pouzivat alerty a dohleda se, co je undefined :)
one_k
Profil
loyza
Odepření přístupu při volání metody XMLHttpRequest.open

tzn. ze to nenalezlo/nemelo pravo na pristup k danemu php scriptu.
zkus tam dat relativni cestu a pokud to pujde, tak jsme v obraze:)
loyza
Profil
Omlouvám se, že otravuju s takovejma trivialitama, samozřejmě že už to funguje.
Relativní (??) cesta byl ten správný způsob jak to spravit. Takže jsem tam dal tohle:
xmlHttp.open("GET","/kudera/ziskejkraj.php?name="+name ,true);
a už to jde, když jsem tam nedal to lomítko na začátku anebo jsem tam dal pouze jméno skriptu bez adresáře tak to samozřejmě nefungovalo, protože to ten apache nenašel.
Jen mi není jasné, proč to s tou ipadresou nefungovalo. Ale bez téhle informace dokážu žít.
Díky všem za pomoc.
peta
Profil
loyza
ja mam treba easyPHP a tam je muj program nahrany v
http://localhost/nazev/
s IP adresou:
http://127.0.0.1/nazev/
s IP adresou na netu:
http://212.20.96.24/wwwstranka/nazev/
(volny.cz/www/nazev)
otazka je, jak to mas nastavene ty.

/ - domovsky adresar (homedir), nahodou jej maji nastaveny spravne na tvou stranku
(treba na wz.cz, kdyz zadas lomitko, tak se dostanes na wz.cz nikoliv ucet.wz.cz
s tim volny by to bylo tak, ze
/ = www.volny.cz
nikoliv predpokladane
/ = www.volny.cz/loyza/
kdyby to bylo spatne nastaveno jako na wz
)
./ - aktualni adresar
- nic = aktualni adersar
../ - nadrazeny adresar
../../ - o 2 nadrazene adresare
loyza
Profil
peta
no mně je to jasný, mám stránky nahrané v adresáři
C:\dev\www\kudera\soubory
no a v apachi je nastaven document_root na hodnotu C:\dev\www takže když napíšu //kudera//soubor tak se dostanu k souboru, který chci, ale když to začíná lomítkem tak si nemyslím, že je to relativní adresa, ale absolutní adresa na servru. Nicméně nechápu, proč to nefungovalo s tou ipadresou.
peta
Profil
loyza
nevim, ja moc nechapu s jakou IP adresou. Kdybys to rozepsal?

"když to začíná lomítkem tak si nemyslím, že je to relativní adresa, ale absolutní adresa na servru."
A jaka jina to tedy je?
absolutni adresa je
C:devwwwkuderasoubory
http://localhost/kudera/ziskejkraj.php
realtivni je jakakoliv, ktera neni uplna
kuderasoubory
kudera/ziskejkraj.php
/kudera/ziskejkraj.php
./kudera/ziskejkraj.php
../kudera/ziskejkraj.php
Jak jsem psal, zalezi, na co maji presmerovane lomitko. Tim padem je to relativni k tomu mistu. Rozhodne bych vice spolehal na:
./kudera/ziskejkraj.php
./ziskejkraj.php
ziskejkraj.php
nez relativni s lomitkem.
one_k
Profil
peta
127.0.0.1

loyza
IMHO je /kudera/soubor relativni cesta s tim ze se bere od korenoveho adresare webu(pokud to mas nastaveno)
Toto téma je uzamčeno. Odpověď nelze zaslat.