NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
rawen
Člen
Avatar
rawen:5.3.2017 1:06

Dobrý den, už několik dní se snažím načítat data z XML souboru, ale stále se mi to nedaří. Nedělám obecně v javascriptu dlouho, tak třeba dělám jen nějakou základní chybu, na kterou si nemůžu přijít, tak jsem se rozhodl zkusit sem napsat. Zápisů jsem vyzkoušel již mnoho, ale všechny fungují pouze ve Firefoxu.

var myUrl= "Files/data.xml";

$.ajax({
    type: 'GET',
    url: myUrl,
    dataType: "xml",
    success: function (xml) {
        // Práce s xml
    }
});

V tomto případě se funkce pro success nevolá v jiném prohlížeči než firefoxu. V ostatních prohlížečích se zavolá funkce pro error, pokud jí mám vytvořenou. Když jsem zkoušel například tento zápis:

var xhttp;
if (window.XMLHttpRequest) {
    xhttp = new XMLHttpRequest();
}
else {
    xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xhttp.open("GET", myUrl, false);
xhttp.send();
myFunction(xhttp);

tak to vždy havaruje na metodě open. Co jsem zkoušel i například tento příklad, tak mi funguje jen ve Firefoxu https://www.w3schools.com/xml/tryit.asp?… .Nemá s tím někdo nějaké zkušenosti? Našel jsem na internetu i jiné způsoby zápisu, ale všechny dopadly stejně, nebo je na to potřeba nějaký speciální script? Já tam používám pouze jquery-3.1.1

Odpovědět
5.3.2017 1:06
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
rawen
Člen
Avatar
rawen:5.3.2017 2:32

Už jsem to víceméně vyřešil, teda jen pro IE, ta podmínka window.XMLHttpRe­quest je nedostatečná, navíc se na ActiveXObject nevolá open, ale load.

Nahoru Odpovědět
5.3.2017 2:32
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Jiří Filip
Člen
Avatar
Jiří Filip:5.3.2017 9:31

Ahoj, zatím jsem tady nikomu s kódem neradil, ale tak snad to nebude úplná katastrofa.

const xml = "./Files/document.xml"

$.ajax({
    url: xml,
    success: (xml) => console.log(xml),
    error: (e) => console.error(e)
})

Kód u mě vypadá takhle a vše funguje. Nejspíš je to blbá rada a asi si to už zkoušel (a dostanu za to palce dolů :-) ), ale zkus umazat type a datatype, co to bude dělat. Taky zkontroluj, jestli ti v xml někde nechybí koncové značky atd. Pak ještě blbá připomínka, ale spouštíš to na serveru, žejo? A když ani to nepůjde, zkus třeba stáhnout axios (https://cdnjs.com/libraries/axios), jestli to nepůjde s tím.

 
Nahoru Odpovědět
5.3.2017 9:31
Avatar
alfonz
Člen
Avatar
alfonz:5.3.2017 10:59

Zkus se třeba v Chromu podívat přes F12 a záložku Network, jestli požadavek požadavek proběhl a jestli se něco vrátilo zpátky.

Nahoru Odpovědět
5.3.2017 10:59
lmao
Avatar
rawen
Člen
Avatar
Odpovídá na Jiří Filip
rawen:5.3.2017 12:28

Děkuji za odpověd, v tomto způsobu zápisu se přidružená funkce k success zavolá pouze pokud se jedná o Firefox. U IE mi funguje načítání, pokud ho dělám přes ActiveXObject. Jediné co se mi nedaří je načítání přes Chrome.
Jinak já to mám vytvořené jen u sebe ve složce, klasickou html stránku s javascriptem. Ve výsledku to bude jen klasický soubor, který si člověk otevře u sebe v počítači i bez internetu.

Nahoru Odpovědět
5.3.2017 12:28
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
vidlec
Člen
Avatar
vidlec:3.7.2017 11:02

Chrome neumožňuje JS přístup k lokálním souborům.
Jedním z řešení je spustit proces Chrome s parametrem –allow-file-access-from-files, což bych nedoporučoval.

 
Nahoru Odpovědět
3.7.2017 11:02
Avatar
Odpovídá na vidlec
Marian Benčat:4.7.2017 18:20

to bych taky hodně silně nedoporučoval :-)

Nahoru Odpovědět
4.7.2017 18:20
Totalitní admini..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.