Portál AbcLinuxu, 7. května 2025 17:22
Mám JavaSctipt na www stránce a přes AJAX odesílám data a zpracovávám výsledek.
Problém je, že při přechodu z Firefoxu 28 na 291 to přestalo fungovat. Ale v prohlížečích s Webkitem (zkoušel jsem rekonq, Chromium) to v pohodě funguje pořád.
Zkoušel jsem to ladit v debuggeru ve Firefoxu (i Firebugem), ale když jsem to krokoval, tak jsem se ničeho nedobral – prostě to skončí na řádku, kde přiřazuji a.responseXML
do proměnné.
To a
se vezme tady:
var a = new XMLHttpRequest();
pak se dělá
a.open("POST", url, true);
A k responseXML
se přistupuje v callback funkci navázané na onreadystatechange
.
Napadá někoho, co s tím? Proč to funguje ve starém FF, rekonqu a Chromiu, ale v novém FF už ne?
[1] schválně jsem teď stahoval staré verze Firefoxu, abych zjistil, kdy se to stalo
Řešení dotazu:
Konkrétně jde o komentáře na mém blogu (stačí si nechat zobrazit náhled komentáře, ani to totiž v novém FF nefunguje).
Možná to tím je, ale je divné, že se mi krokování zasekne už při pokusu o přiřazení responseXML
do proměnné.
A taky je divné, že to nefunguje, i když tu odpověď ze serveru posílám jako application/xhtml+xml
a je to ve jmenném prostoru xmlns="http://www.w3.org/1999/xhtml"
a v tom článku píší:
Currently browsers are not schema/DTD aware for XMLHttpRequests, although they support well-known DTDs like HTML and XHTML for documents.
Tak že by pro Firefox bylo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN" "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
do verze 28 „well-known DTD“ a pak už ne?
Do konsole jsem už koukal, výjimka 1 vyskočí, ale moc mi to nepomohlo.
[1] viz řádek „Got an axception…“ v příloze ten vyskočil, když jsem dokrokoval na řádek s a.responseXML
a.send();
?
Ten tam je (na řádku 38), na server se to odešle, ale problém je se zpracováním odpovědi v prohlížeči.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.