Autor Zpráva
De.Li
Profil *
Prosim pomuze mi nekdo z nasledujicim problemem???
Pouzivam XMLHttpRequest pro nacteni XML souboru. Ve FF i Opere vse funguje jenom IE nacte XML ale dale ho uz JS nezpracovava.

script.js:
function vytvorHttpRequest()
{
if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
}

function nacti(url)
{
otviram();
vytvorHttpRequest();
xmlHttp.open('GET', url, true);
xmlHttp.onreadystatechange = zmenaStavu;
xmlHttp.send(null);
}

function zmenaStavu()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
var poleSeznam = new Array;
var poleFilmu = new Array;
var xml = xmlHttp.responseXML; // dopocad to bezi ok
poleSeznam = xml.getElementsByTagName('seznam'); // tady uz se rozchazi ie v poli se
// nenachazi ani jeden prvek
poleFilmu = xml.getElementsByTagName('film'); // a tady taky ne
zpracujFilmy(poleFilmu);
}
}
}

struktura XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE seznam [
<!ELEMENT seznam (film+)>
<!ELEMENT film (kategorie,nazev,reziser+,rok, zanr+,obsah)>
<!ELEMENT kategorie (#PCDATA)>
<!ELEMENT nazev (original,cesky)>
<!ELEMENT cesky (#PCDATA)>
<!ELEMENT original (#PCDATA)>
<!ELEMENT reziser (#PCDATA)>
<!ELEMENT rok (#PCDATA)>
<!ELEMENT zanr (#PCDATA)>
<!ELEMENT obsah (#PCDATA)>
]>
<seznam>
<film>...</film>
<film>...</film>
</seznam>

PROSIM PORADTE
Chamurappi
Profil
Reaguji na De.Li:
1) Je ten XML zdroj dodán s příslušným MIME typem? Tedy nejlépe „application/xml“?
2) Proč je v něm <!DOCTYPE>? Jestli nepoužíváš vlastní obecné entity, pryč s ním.
3) Není v něm nějaký ošklivý znak? Problémy s kódováním češtiny nepozoruješ? Příznaky nasvědčují tomu, že Explorer vidí v dokumentu fatální chybu.
4) Což takhle dát si JSON? Na strukturovaná data není potřeba tak tučný formát, jako je XML.
De.Li
Profil *
Mas pravdu neco je spatne s tim XML. Pokud si nactu ciste jenom XML tak IE halsi:

Neočekávaný konec souboru Při zpracování prostředku http://www.deli.xf.cz/filmy/data.xml došlo k chybě. Řádek 1, pozice 1

&

ale nemuzu prijit na to co je tam spatne, problemy s cestinou by se projevily i v jinych prohlizecich.
habendorf
Profil
Problém je v řádku


<!ENTITY amp '&'>
Chamurappi
Profil
Reaguji na De.Li:
Neočekávaný konec souboru Při zpracování prostředku
Ta hláška je přesná, Explorer skutečně nedostává kompletní XML zdroj. A není sám. Nevím, proč někomu dorazí všechno a někomu ne.

Update: Chybná hypotéza, Web-Sniffer píše „Only first 100 KiB loaded“.

problemy s cestinou by se projevily i v jinych prohlizecich
Ne nezbytně. Některé fatální chyby jsou v Mozille i Opeře tolerovány.
Dokonce je jedna ignorovaná v nich i v Exploreru: Kódování tvého XML totiž má být podle specifikace „us-ascii“, nehledě na to, co tvrdíš v XML deklaraci. MIME typ „text/xml“ ho totiž má dané jako výchozí. Ale zrovna tohle nebude příčina problému.
peta
Profil
De.Li
Mozna by bylo dobre udelat vystup jako TXT a dat sem odkaz.
Pak by se dalo resit to, jestli mu v PHP posilas hlavicku header() pro XML nebo jinou. JS na to opravdu pro IE nestaci, protoze nezna funkci pro nastaveni hlavicky pro ajax.
Kazdopadne FF tuhle funkci zna a ty mu ji tam nepises.

Zkus porovnat s prikladem:
http://www.volny.cz/peter.mlich/www.htm#msub13
ajax chat
Ale nerucim za cestinu, od te doby jsem se k tomu uz nedostal. Kazdopadne by tam mela fungovat nahrazka pres iframe. A ted ani nevim, jestli to pouziva textResponse nebo XML.

Podle mne tam do XML nepatri tyto veci:
<?xml version="1.0" encoding="utf-8"?>
<!-- deklarace DOCKTYPE -->
<!DOCTYPE seznam [
<!ELEMENT seznam (film+)>
<!ELEMENT film (kategorie,nazev,reziser+,rok, zanr+,obsah)>
<!ELEMENT kategorie (#PCDATA)>
<!ELEMENT nazev (original,cesky)>
<!ELEMENT cesky (#PCDATA)>
<!ELEMENT original (#PCDATA)>
<!ELEMENT reziser (#PCDATA)>
<!ELEMENT rok (#PCDATA)>
<!ELEMENT zanr (#PCDATA)>
<!ELEMENT obsah (#PCDATA)>
<!ENTITY nbsp ' '>
<!ENTITY quot '"'>
<!ENTITY apos '''>
<!ENTITY amp '&'>
]>

<!-- struktura XML -->
Po jejich smazani by to melo fungovat
peta
Profil
a chybi ti tam Shrek 3 :)
Chamurappi
Profil
Reaguji na De.Li:
Tak habendorf má pravdu, problém je skutečně v řádku:
<!ENTITY amp '&#38;'>
Stejně dopadneš, když se pokusíš deklarovat entitu s obsahem „&#60;“ nebo „]]&#62;“. Zajímavé. Někdy prozkoumám, jaké má být správné chování.
Výchozí pětici entit „lt“, „gt“, „amp“, „apos“ a „quot“ není třeba deklarovat, jsou v XML napevno.

Má dřívější diagnóza ohledně nedotaženosti dokumentu je také správná, akorát se kvůli tomu ampersandu zatím neprojevuje. (Update: tak správná nebyla a ampersand asi způsobil jediný její symptom)
De.Li
Profil *
Jenze ono to dela i po kompletnim smazani <!DOCTYPE seznam [ .. ]>. Vztvoril sem novy zkusebni soubor http://www.deli.xf.cz/filmy/data.xml a ten to dela taky neni v nem diakritika a ani jine hloupe znaky, tak co delám spatne???

to peta Shrek 3 bude neni tam jeste vsechno vypsane :-)
De.Li
Profil *
Tak už to jde děkuji všem kteří pomohli!!!

Snad ještě maličkost nevite jak seřadit pole podle české abecedy tak aby to házelo Č za C atd. a ne až někam na konec????
peta
Profil
De.Li
Nove tema = zalozeni noveho tematu.

muzes zacit u serazeni tabulky
http://peter-mlich.wz.cz/x/ww/js/jspriklady.htm
tam ale pocitam u sloupce .000 s tim, ze vsechna cisla konci .xyz . kdyby tam hodil nekdo 123 bez tecky a 111.000 , tak 123 bude nad tim. Tam bys musel zrejme odstranit jen carku a kazde cislo vynasobit *1 . A tak nejak podobne postupujes pro retezce. Akorat s ch bude asi problem... Zrovna ted mne nenapada reseni
Ja bych to mozna ale seradil uz v PHP nebo SQL.



Uz ti teda ten XML chodi, jo, kdyz to pises.
V cem byl problem?
De.Li
Profil *
A cim by mohlo byt ze pokud je to XML delsi tak si ho IE nacte jenom cast a pak zahlasi ze nektere elementy nebyly radne uzavreny.
Chamurappi
Profil
Reaguji na De.Li:
Prosil bych živou ukázku.
Nebylo by opravdu jednodušší použít JSON místo XML?
De.Li
Profil *
To xml je tady http://deli.xf.cz/filmy/data.xml
S JSON nemam zkusenosti a navic bych musel prepsat celou tu databazi do cehoz se mi moc nechce.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0