Ajax: 2 Div's befüllen

  • Hallo,

    ich habe auf meiner Seite ein div-Bereich, der mit den Inhalten von den Hauptmenüpunkten befüllt wird. Nun kann es vorkommen, dass die geladene Seite weitere Menüpunkte enthält. Außerdem hat die geladene Seite einen weiteren div-Bereich, der eben die Inhalte dieser Untermenüpunkte aufnimmt(div im div). Das Befüllen der Div's führe ich mittels Ajax durch. Immer wenn ein Menüpunkt angeklickt wird (egal ob Haupt- oder Untermenü) wird die URL verändert. Nun werte ich in einem weiteren Javascriptteil die URL aus, um so z.B. Hyperlinks auf meine Seite zu ermöglichen. Wenn nun die URL auch das Untermenü enthält, möchte ich, dass erst in das div die Seite mit dem Hauptmenüpunkt geladen wird (wo auch das div für das Untermenü ist) und anschließend soll in das div für das Untermenü die entsprechende Seite geladen werden. Folgendes hab ich dazu gemacht:

    Code
    if (window.location.hash == "#results_fce05"){
    		getSite("results/results.html", "main_fg");
    		getSite("results/fanmeisterschaft_fce.html", "resultsContent");
    	}

    , d.h. also results.html enthält den div-Container resultsContent. Das ganze funktioniert nur nicht, als Fehlermeldung bekomme ich, dass die Variable, der ich resultsContent zuweise, keine Eigenschaften hat. Übrigens die Aufrufesyntax der Funktionen sind korrekt, der zweite Aufruf funktioniert nämlich in results.html und lädt die entsprechende Seite in das div. Hat jemand eine Idee wo der Fehler liegen könnte? Wenn ich das alles zu kompliziert bschrieben habe, dann bitte noch mal nachfragen. Ich hoffe auf eure Hilfe ;)

    edit: Sry, habe es ausversehen ins falsche Forum gepostet, wäre nett, wenn ein Moderator diesen Beitrag ins "PHP - CGI - Perl - JavaScript und Co."-Forum verschieben könnte.

    gruß chuqa

  • ;)
    Naja kommt ja nur der normale Ajax-Code


    myContainer ist eine globale Variable, die eigentlich nur das Ziel-Div enthalten soll.

    gruß chuqa

  • das kann nicht funktionieren :-pp

    du musst schon dein target komplett durchschleiffen.

    da du es ja beim 3ten aufruf gleich wieder überschreibst.
    den der get aufruf dauert ne ganze weile!

  • Tja, wäre nett wenn du mir mal sagen könntest, was ich bei meinem Code ändern müsste, damit das funktioniert. Ich habe noch den Status von dem XmlHttpRequest-Objekt eingebaut:

    Code
    function alertInhalt() {
    	if ((http_request.readyState == 4) && (myContainer != "" )) {
    			if (http_request.status == 200){
    				document.getElementById(myContainer).innerHTML = http_request.responseText;
    			}
          }
    }

    Bin recht grün in Ajax-Sachen, wäre deswegen nett, wenn ich ein wenig Hilfe bekommen könnte.

    gruß chuqa

  • also man nehme die grund klasse von oben und erweitere sie um die von dir gewünschten Funktionen:

  • nun aber trotzdem noch Vorsicht...

    den einige browser haben immer noch probs mit der gleichzeitigen abarbeitung von 2 request...

    also kann es sein, das du die staffeln musst.

  • Herzlichen Dank für deine Mühen,
    es ging danach leider immer noch nicht wirklich. Es wurde gar nix in den div-Bereich geladen, auch nicht mehr die erste Seite. Das passierte allerdings nur bei einem doppelten Aufruf von getSite(). Ein einzelner Aufruf funktionierte nach wie vor. Ich habe nun den zweiten Aufruf ein bisschen verzögert ausgeführt und es wird ordentlich abgearbeitet

    Code
    if (window.location.hash == "#results_fce06"){
        getSite("results/results.html", "main_fg");
        window.setTimeout('getSite("results/fceCup06.html", "resultsContent")',20);
    }


    Jetzt muss ich nur noch über Stylesheets dafür sorgen, dass der User nur das Endergebnis präsentiert bekommt und nicht schon die ganzen Zwischenschritte ;)
    Danke nochmals

    gruß chuqa