Eine URL im jquery Ajax Request dynamisch beziehen

Zaziemetro

Grünschnabel
Hallo,
ich komme irgendwie nicht weiter.
Ich habe einen ajax request unter jquery der für sich genommen mit einer festen xml-Datei auch funktioniert.
Javascript:
$(document).ready(function()
{
$.ajax({
                 type: "GET",
                 url: "mapXML5.xml",
                 dataType: "xml",
                 success: handleSuccess,
                 error: handleError
         });

         function handleSuccess(xml)
         { usw. ....
Nun möchte ich aber die xml-Datei per Selectbox wechseln können, also z.B. in der Box id = "list2" soll bei der Select-Option "Irgendeinwort" die "mapXML5.xml" vom ajax Request geladen und geparst werden und bei der Option "Einandereswort" in "list2" soll der Request für "mapXML9.xml" durchgeführt werden. Wie kriege ich das hin? Der Versuch, die url als var zu übergeben, funktioniert auch nicht (z.B. so:
Javascript:
$("#list2").change(function(event)
         {
                 $("#list2 option:selected").each(function()
                 {
                         selectedThema = $(this).text();
                 });
                 if(selectedThema == "Irgendeinwort")
                 {
                         var xmldatei = "mapXML5.xml";
                 }
                 else if(selectedThema == "Einandereswort")
                 {
                         var xmldatei = "mapXML9.xml";
                 };
          });

         //send request for XML
         $.ajax({
                 type: "GET",
                 url: xmldatei,
                 dataType: "xml",
                 success: handleSuccess,
                 error: handleError
         });
Auch als function formuliert lässt sich der Inhalt von ajax 'url: " "' nicht verändern.
Hat jemand eine Idee?

Danke
Zaziemetro
 
Zuletzt bearbeitet von einem Moderator:
Schreib bitte nächstes mal deinen Code in die entsprechenden Tags ([code=javascript][/code])

Du deklarierst die Variable "xmldatei" innerhalb des if- und else-Blocks. Die ist außerhalb nicht vorhanden.
 
Hallo,
die "var xmldatei" habe ich am Beginn des JS-scripts gesetzt. Das allein kann m.E. nicht das Problem sein, denn ich habe im Eventhandler für die vierte Liste in den else-if-Bereich eine var ("werte") gesetzt, die außerhalb in
Code:
$("#area").text(selectedStatistic + ": " + this.getAttributeNS(null,werte.toLowerCase()));
aufgerufen wird.

Zazie
 
Hier deklarierst du zwei Variablen, die außen definitiv nicht verfügbar sind, egal was du vorher deklariert hast.

Javascript:
if(selectedThema == "Irgendeinwort")
{
    var xmldatei = "mapXML5.xml";
}
else if(selectedThema == "Einandereswort")
{
    var xmldatei = "mapXML9.xml";
}

Wenn du vorher schon irgendwo "var xmldatei" stehen hast, dann lass in dem Code die beiden "var" weg.
 
Ja, die 'vars' davor waren überflüssig. Hab ich bei "werte" auch nicht stehen.
Nützt aber trotzdem nichts. 'xmldatei' gilt als 'undefiniert' in der Fehlerkonsole.
"Werte" auch (bei einer statischen .xml), aber nur solange, bis ich mit 'select' einen Wert für einen 'Indikator' gewählt habe. Andererseits gibt es 'werte' auch nur in der else-if und bei z.B. alert nicht außerhalb.
Also muss ich 'xmldatei' anders aufrufen, aber wie?
 
Du führst "$.ajax" ja sofort aus. Das sollte mit in die change-Funktion oder z.B. mit einem button.
Oder du gibst der Variable bei deklarieren auch direkt einen Wert (default Wert?), dann ist sie wenigstens nicht mehr undefined.
 
Dass mit dem Sofortausführen liegt daran, dass ich ursprünglich direkt Daten aus der geparsten Datei selektiert habe, ajax stand somit am Beginn des ganzen Ablaufs. Weil meine xml aber zu groß wird (bei über 100 Indikatoren über 20 Jahre) wollte ich die kleiner machen.
Eine alternative direkte Abfrage bekomme ich aber nur mit einer statischen php-Datei hin (als url: 'abfrage.php' mit festgelegten rows, oder als dynamische 'abfrage2.php' nach der select-box. Beides kriege ich aber nicht zusammen, weil das, was ich jeweils versucht habe zu übergeben, nie ankommt bzw. nie angenommen wird (meine Fähigkeiten in JS sind einfach viel zu schwach).
Deshalb jetzt der Versuch mit der gesplitteten xml-Datei.

Dein Hinweis mit der Einordnung wird genau das Problem sein. Ich werde das (morgen) versuchen.
Vielen Dank dafür.
 

Neue Beiträge

Zurück