• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wczytywanie pliku xml do Stringa (client-side) bez użycia Ajax . Da się?

VPS Starter Arubacloud
0 głosów
225 wizyt
pytanie zadane 14 lutego 2017 w JavaScript przez Wasser Początkujący (340 p.)

Mam taki problem, że potrzebuje wczytać plik XML client-side bez użycia Ajaxa (bez konieczności tworzenia serwera). Gdy próbuję to zrobić z użyciem AJAX calls to wyświetla mi się Cross Origin Error ze względów bezpieczeństwa. 

Szukałem znaleźć obejście... ale jedyne co znalazłem to parsowanie XML do Stringa (co działa), jeżeli nasz plik XML jest w HTMLu. Ale co zrobić jeżeli nasz plik XML to osobny plik?

Próbowałem wczytać przez iFrame... ale też coś słabo mi z tym poszło, bo nie wiedziałem jak zamienić to na Stringa.

Może do problemu podchodzę źle i da się to zrobić prościej? Podobnie sprawa ma się z plikami tekstowymi. Opcją, którą działa jest załadowanie pliku z dysku, ale to rozwiązanie zbytnio mnie nie zadowala. Z góry dzięki za odpowiedź ;)

Wrzucam przy okazji kod, który mam. 

 

<script src="./node_modules/bonsai/lib//bonsai.min.js"></script>

<script src="./node_modules/jquery/dist/jquery.js"></script>
<script src="app.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<iframe id="textfile" src="books.xml"></iframe>


<html>

<body>

    <div id='target'></div>
    <p id="demo"></p>

    <script>
        var doc = document.getElementById('textfile');

        console.log(doc);

        var text, parser, xmlDoc;

        text = "<bookstore><book>" +
            "<title>Everyday Italian</title>" +
            "<author>Giada De Laurentiis</author>" +
            "<year>2005</year>" +
            "</book></bookstore>";


        parser = new DOMParser();
        xmlDoc = parser.parseFromString(text, "text/xml");

        document.getElementById("demo").innerHTML =
            xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    </script>

</body>

</html>

 

 

 

komentarz 15 lutego 2017 przez ScriptyChris Mędrzec (190,190 p.)

AJAX calls to wyświetla mi się Cross Origin Error ze względów bezpieczeństwa.

Na jakiej przeglądarce próbowałeś? Firefox zdaje się mieć łagodniejszy mechanizm.

 jedyne co znalazłem to parsowanie XML do Stringa (co działa), jeżeli nasz plik XML jest w HTMLu. Ale co zrobić jeżeli nasz plik XML to osobny plik?

Jeśli plik XML jest na dysku, to musisz go jakoś wczytać: AJAX, albo przez pole <input type="file"> albo przez Drag&Drop API

Próbowałem wczytać przez iFrame... ale też coś słabo mi z tym poszło, bo nie wiedziałem jak zamienić to na Stringa.

Próbowałeś z atrybutem <iframe srcdoc=""> ? Możesz też dostać się do kontentu iframe poprzez iframeElement.contentDocument i wtedy zapodać XMLa - ale będzie on i tak przekształcony na HTML. Czyli wielkości liter w znacznikach będą napisane z małej litery. Tutaj przydało by się użyć transformaty XSLT, a tego pewnie chcesz uniknąć (za dużo zabawy), żeby pliczek XML przerobiło na HTML.

https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor

https://developer.mozilla.org/en-US/docs/Web/XSLT

komentarz 15 lutego 2017 przez Wasser Początkujący (340 p.)
O dzięki za odpowiedź :D

Właśnie doszedłem do rozwiązania dosyć słabego, ale działajacego... po prostu wrzuciłem plik XML w obiekt typu string.

Jako, że plik XML jest generowany z C#... to po prostu zamiast pliku XML generuje plik JS/TXT i to jego wczytuje. Rozwiązanie słabe, ale zadziałało ;)

Jutro wypróbuję twój sposób. Wydaje mi się, że jest lepszy :D

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 296 wizyt
pytanie zadane 31 maja 2020 w JavaScript przez mm Użytkownik (890 p.)
0 głosów
1 odpowiedź 1,894 wizyt
pytanie zadane 8 sierpnia 2018 w JavaScript przez Jumpeq Początkujący (270 p.)
0 głosów
1 odpowiedź 1,148 wizyt
pytanie zadane 27 października 2016 w JavaScript przez Newperty Początkujący (280 p.)

93,031 zapytań

141,995 odpowiedzi

321,300 komentarzy

62,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...