XML-LadeScript will nicht in Main.js funktionieren

Blaubär

Mitglied
Hallo Forum,

ich habe hier mal wieder eine Frage zu einer Problemstellung:
Ich habe hier ein kleines Script, welches mir Daten aus einer XML-Datei holt
und dann in einer Liste zusammensetzt (Danke noch mal an Jan), das sieht so aus:
HTML:
<!DOCTYPE html>
<html>
<head>
   <title>jquery reads xml</title>
   <meta charset="UTF-8">
   <link rel="stylesheet" href="http://jquerymobile.com/demos/1.3.0-rc.1/css/themes/default/jquery.mobile-1.3.0-rc.1.css"/>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
   <script src="http://jquerymobile.com/demos/1.3.0-rc.1/js/jquery.mobile-1.3.0-rc.1.js"></script>
<body>
<div data-role="page">
    <div id="mediaContainer">
        <ul data-role="listview" ></ul>
    </div>
</div>
<script type="text/javascript">
    $(document).ready(function()
    {
        var mc = $('#mediaContainer');
              mcUl = $('#mediaContainer ul');
        // ganze XML-datei einlesen und in variable 'XMLmediaArray' speichern
        $.get("media.xml", function(XMLmediaArray){
            if (mcUl.length === 0) {
                ul = $("<ul data-role='listview' >");
                mc.append(ul);
            }
            // suche nach jedem (each) 'bluray' abschnitt
            $(XMLmediaArray).find("bluray").each(function(){
                // gefundenen abschnitt in variable zwischenspeichern (cachen)
                var $myMedia = $(this);
                // einzelne werte auslesen und zwischenspeichern
                // attribute: funktion 'attr()'
                // tags: nach dem tag suchen & text auslesen
                var id = $myMedia.attr("id");
                var title = $myMedia.attr("title");
                var description = $myMedia.find("description").text();
                var genre = $myMedia.find("genre").text();
                // daten von jeden treffer ausgeben
                // unformatiert...nur zum zeigen!
                // append = inhalt/string dem kontainer anhängen
                mcUl.append("<li>"+title+"<p>"+id+" # "+description+" # "+genre+"</p></li>");
            mcUl.listview('refresh');
            });
        });
    });
</script>
</body>
</html>
Was ich aber gerne umsetzen möchte ist, dass das Script an sich in eine main.js-Datei ausgelagert wird,
und ich dann beim Aufrufen des Scripts gleich noch sagen kann, welche XML-Datei geladen werden soll.
Also den Pfad zur jeweiligen Xml mit übergebe.
Wenn ich das Script jetzt aber in eine Funktion packe und die Funktion dann aufrufe, passiert leider garnichts,
es wird also keine Liste zusammengebaut...!?
Liegt es vielleicht daran, dass ich warten müsste, bis die Liste "fertig" ist, oder ist es etwas ganz anderes?
Und muss ich für die Xml-Pfad-Übergabe sowas wie eine Switch-Case Abfrage haben, oder geht das einfacher?
Würde mich sehr über eure Hilfe freuen :)
Viele Grüße
Blaubär
 
Problem gelöst!
Ich war einfach wieder zu dusselig, main.js musste natürlich ganz am Ende geladen werden.
Und, da ich die "Xml-Ladeseite" von einer anderen Seite aufrufe, muss dort auch main.js geladen sein...
Was ich nicht ganz verstehe, aber jetzt funktioniert es!

Gruß
 

Neue Beiträge

Zurück