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

Jak wczytać dane z pliku XML do HTML używając JavaScript

0 głosów
295 wizyt
pytanie zadane 8 sierpnia 2018 w JavaScript, jQuery, AJAX przez Jumpeq Początkujący (270 p.)

Cześć,
oto mój kod: http://jsfiddle.net/kj1n8uqz/8/
Chciałbym, aby użytkownik po kliknięciu przycisku "Wczytaj" mógł wybrać sobie sam który plik chce wczytać. Dany plik jest wczytywany jako XML i uzupełniany w odpowiednie inputy/selecty i wyświetlony na stronie. Proszę nie piszcie "użyj JSON", do tego zadania mam użyć formatu XML. Jeżeli chodzi o nazwę name, które są takie same jak "choice" i "choice1" to niestety ale muszą takie zostać (przydatne jest to w innych elementach tego zadania którego tutaj nie załączyłem).

Plik XML do wczytania:

 

<?xml version="1.0"?>
<K1>
<punkty name="choice" value="4" checked="false"></punkty>
<punkty name="choice" value="3" checked="false"></punkty>
<punkty name="choice" value="2" checked="false"></punkty>
<punkty name="choice" value="1" checked="false"></punkty>
<punkty name="total" value="0" checked="false"></punkty>
<punkty name="choice1" value="4" checked="false"></punkty>
<punkty name="choice1" value="3" checked="false"></punkty>
<punkty name="choice1" value="2" checked="false"></punkty>
<punkty name="choice1" value="1" checked="false"></punkty>
<punkty name="total1" value="0" checked="false"></punkty>
</K1>
<P1>
<punkty value="5" id="valueOne"></punkty>
<punkty value="0" id="valueOne1"></punkty>
<punkty value="0" id="valueOne2"></punkty>
<punkty value="0" id="valueOne3"></punkty>
<punkty value="3" id="valueOne4"></punkty>
<punkty value="0" id="valueOne5"></punkty>
</P1>

Czy da się to jakoś zrobić? Jeżeli tak to w jaki sposób? Gdzie powinienem szukać rozwiązania? Trochę się z tym męczyłem ale generalnie nie za bardzo wiem od czego zacząć. Wiem, że można spróbować to zrobić AJAX'em na podstawie przykładu który jest tutaj: https://www.w3schools.com/js/js_ajax_xmlfile.asp
Jednak pokazać dane na pustym arkuszu to nie problem, w jaki sposób sprawić aby były wyświetlane w odpowiednich input'ach czy select'ach?
Za wszelkie uwagi/wskazówki byłbym naprawdę bardzo wdzięczny! :)

Pozdrawiam

1 odpowiedź

+2 głosów
odpowiedź 8 sierpnia 2018 przez Comandeer Mentor (454,180 p.)
wybrane 11 sierpnia 2018 przez Jumpeq
 
Najlepsza

Po pierwsze, nie polecam W3Schools, a MDN.

Co do samego problemu, najlepiej będzie wczytać ten XML jako dokument i pobrać jego poszczególne elementy, a następnie przenieść ich zawartość do konkretnych elementów na stronie WWW.

komentarz 11 sierpnia 2018 przez Jumpeq Początkujący (270 p.)
Nie za bardzo ogarniam tego DOM parser'a dlatego pytam o php
komentarz 14 sierpnia 2018 przez Jumpeq Początkujący (270 p.)

Kod działa, robi wszystko to co chcę, tutaj link: https://next.plnkr.co/edit/9kRLWf2OiaRcJaqj (niestety nie działa poprawnie, trzeba odpalić w xamppie dla testowania)

Jest jedno ale. Jeżeli będzie dwóch użytkowników, użytkownik X i Y. Załóżmy, że użytkownik X wypełnił formularz, zapisał go i wgrał na serwer i skończył. Wtedy plik dalej jest na serwerze, jeżeli użytkownik Y chce wypełnić formularz ma wypełniony przez użytkownika X. W jaki sposób zrobić coś takiego, że jeżeli pierwszy raz wchodzimy na stronę (nie wiem odświeżenie czy coś) to wszystkie pliki z katalogu "uploads" są usuwane?
Druga opcja na rozwiązanie tego problemu to zapisywanie pliku .xml pod unikalną nazwą w folderze "uploads" i dany parametr przekazywanie do:

xhttp.open("GET", "uploads/xml", true);


Pytanie w jaki sposób w miejsce "uploads/xml" przekazać nazwę pliku zapisanego parametru, który jest generowany w PHP?

1
komentarz 14 sierpnia 2018 przez Comandeer Mentor (454,180 p.)

A jeśli kod JS byłby generowany przez PHP? Wówczas po prostu podstawiałoby się zawartość zmiennej.

Albo generować przez PHP zmienną globalną z nazwą pliku i ją tam użyć:

window.sessionId = '<?=$generatedCode;?>';

 

komentarz 18 sierpnia 2018 przez Jumpeq Początkujący (270 p.)

Generalnie problem już prawie rozwiązałem ale dręczy mnie jedna sprawa (tutaj dostępny kod: https://next.plnkr.co/edit/9kRLWf2OiaRcJaqj?preview )
Chciałbym aby po wgraniu danych na serwer i zczytaniu informacji plik od razu został usunięty. Jak narazie jestem to w stanie po kliknięciu button'a z przekierowaniem "delete.php"
 

<?php    
    $source = 'data.xml';
    unlink($source);
?>

Jednak w jaki sposób to zrobić aby po kliknięciu na przycisk "Upload" uruchomić w PHP usuwanie tego pliku, aby informacje zdążyły się zczytać a następnie plik został usunięty?

komentarz 18 sierpnia 2018 przez Comandeer Mentor (454,180 p.)
A czemu nie zrobisz drugiego żądania Ajaksowego po tym jak zakończysz obrabiać pierwsze?

Podobne pytania

0 głosów
0 odpowiedzi 123 wizyt
pytanie zadane 8 czerwca 2017 w JavaScript, jQuery, AJAX przez Damian Prymus Początkujący (380 p.)
0 głosów
1 odpowiedź 441 wizyt
pytanie zadane 27 października 2016 w JavaScript, jQuery, AJAX przez Newperty Początkujący (280 p.)
0 głosów
3 odpowiedzi 152 wizyt
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

63,168 zapytań

109,404 odpowiedzi

228,554 komentarzy

42,693 pasjonatów

Przeglądających: 68
Pasjonatów: 5 Gości: 63

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...