Nad Flanders: Einzelnes Div neu laden

Hallo,

ich habe ein Formular auf meiner Seite, beim Absenden dieses Formulares ´soll nur das Div, welches das Formular beinhaltet, neu geladen werden.
Funktionieren tut das mit js bzw. ajax. Auch habe ich schon diverse scripte probiert, bekomme es aber nicht zum "laufen". Hier mal der Code:

  
  
<script type="text/javascript">  
var http_request = false;  
function macheRequest(url) {  
  http_request = false;  
  if (window.XMLHttpRequest) {  
    // Mozilla, Safari,...  
    http_request = new XMLHttpRequest();  
    if (http_request.overrideMimeType) {  
       http_request.overrideMimeType('text/xml');  
       // zu dieser Zeile siehe weiter unten  
    }  
  } else if (window.ActiveXObject) { // IE  
    try {  
      http_request = new ActiveXObject("Msxml2.XMLHTTP");  
    } catch (e) {  
      try {  
        http_request = new ActiveXObject("Microsoft.XMLHTTP");  
      } catch (e) {}  
    }  
  }  
  if (!http_request) {  
    alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');  
    return false;  
  }  
  http_request.onreadystatechange = alertInhalt;  
  http_request.open('GET', url, true);  
  http_request.send(null);  
}  
function alertInhalt() {  
  if (http_request.readyState == 4) {  
    if (http_request.status == 200) {  
      alert(http_request.responseText);  
    } else {  
      alert('Bei dem Request ist ein Problem aufgetreten.');  
    }  
  }  
}  
</script>  
<script type="text/javascript">  
function reloaddiv () {  
  document.getElementById('reloaddiv').innerHtml = macheRequest(divinhalt.htm);  
}  
</script>  

  
<div class="map">  
<form action="http://bewerberservice.eu/community-1" method="post">  
<input type="hidden" name="location" value="1" />  
<input name="" type="submit" style="border:0;cursor:pointer"  onclick="reloaddiv();" class="location" value="" />  
</form>  
  
</div>  
<?php if ($_POST['location'])  
  
echo'<span class="post-location"><strong>New York</strong>&nbsp;&nbsp;-&nbsp;&nbsp;Meeting with Suzanne</span>'  
  
?>  
</div>  

Wäre schon, wenn mir jemand weiterhelfen könnte.

Nad

  1. Hi,

    ich habe ein Formular auf meiner Seite, beim Absenden dieses Formulares ´soll nur das Div, welches das Formular beinhaltet, neu geladen werden.
    Funktionieren tut das mit js bzw. ajax.

    Frames mit JavaScript zu simulieren hat übrigens die Nachteile *beider* Verfahren.

    document.getElementById('reloaddiv').innerHtml = macheRequest(divinhalt.htm);

      
    Wo hast Du denn das JavaScript-Objekt divinhalt definiert, und was steht in dessen htm-Eigenschaft?  
      
    
    > Wäre schon, wenn mir jemand weiterhelfen könnte.  
      
    Wie lautet eigentlich die Problembeschreibung?  
      
    Cheatah  
    
    -- 
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|  
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html  
    X-Will-Answer-Email: No  
    X-Please-Search-Archive-First: Absolutely Yes
    
    1. Wie lautet eigentlich die Problembeschreibung?

      Hi,

      naja,so wie ich es habe, funktioniert es nicht. Ich bin nun auf der suche nach einem Script, mit dem es funktionieren würde, bzw. auf der Suche nach Jemandem, der mir helfen kann, den Fehler in meinem Script zu finden.

      1. Hi,

        Ich bin nun [...] auf der Suche nach Jemandem, der mir helfen kann, den Fehler in meinem Script zu finden.

        Auf einen hat dich Cheatah gerade schon fragenderweise hingewiesen - wenn du also nicht die Hälfte ignorieren würdest, wüsstest du jetzt schon mehr.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
    2. Frames mit JavaScript zu simulieren hat übrigens die Nachteile *beider* Verfahren.

      »»

      document.getElementById('reloaddiv').innerHtml = macheRequest(divinhalt.htm);

      Okay. Und was wäre eine Variante ohne Nachteile?
      Wie muss ich das JavaScript-Objekt divinhalt definieren?

      1. document.getElementById('reloaddiv').innerHtml = macheRequest(divinhalt.htm);
        Okay. Und was wäre eine Variante ohne Nachteile?
        Wie muss ich das JavaScript-Objekt divinhalt definieren?

        Ohne Javascript. Du willst Formularinhalt via post versendnen, also verwende die mit HTML möglichen Mittel.
        Das Formular wird an die verarbeitende Ressouce im action-Attribut des form-Elements gesendet.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
      2. Hi,

        document.getElementById('reloaddiv').innerHtml = macheRequest(divinhalt.htm);

        Wie muss ich das JavaScript-Objekt divinhalt definieren?

        Wenn es dir noch so an Grundkenntnissen fehlt, dass dir nicht mal der Unterschied bewusst ist, den es an dieser Stelle macht, ob du auf die nicht existente Eigenschaft eines nicht existenten Objektes zugreifst, oder einen Textstring notierst - dann solltest du das mit dem AJAX vielleicht erst noch mal eine zeitlang zurückstellen.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
      3. Wie muss ich das JavaScript-Objekt divinhalt definieren?

        Gar nicht. Cheatah wollte dich auf den Unterschied zwischen

        divinhalt.htm
        (zwei Objekt-Bezeichner mit dem Eigenschafts-Operator verknüpft, also: Das Unterobjekt namens »htm« vom Objekt namens »divinhalt«)

        und

        "divinhalt.htm"
        (ein String mit dem Textinhalt »divinhalt.htm«)

        aufmerksam machen.

        Wenn du einen Dateinamen (eine URI, also eine Webadresse) an eine Funktion übergeben willst, dann brauchst du letzteres.

        Mathias

  2. Falls du das Formular per Ajax absenden willst, also die Formulardaten per XMLHttpRequest im Hintergrund übertragen willst:
    Dein Formular ist ein POST-Formular. Deine Ajax-Funktion sendet ein GET-Request ohne Parameter ab. Wenn du das Formular per Ajax versenden willst, musst du alle Formularfeldnamen- und Werte von Hand auslesen, den POST-Request-Body selbst zusammenbauen (name=wert&name=wert& usw.), einen POST-Request absenden und diese Daten mitschicken.

    Das ist nicht so trivial. Vielleicht solltest du dir, da du offenbar noch wenig JavaScript-Erfahrung hast, erst einmal eine einfachere Lösung suchen.

    function reloaddiv () {
      document.getElementById('reloaddiv').innerHtml = macheRequest(divinhalt.htm);
    }

    Ich sage es ungerne, aber du hast dir Code zusammenkopiert, ohne zu verstehen, wie das ganze funktioniert. Damit wirst du nicht weiterkommen.

    Erstens gibt es kein Element mit der ID reloaddiv in deinem Beispiel, zweitens heißt die Eigenschaft korrekt innerHTML, drittens müsstest du die Adresse als "String" notieren (wobei deine Ajax-Funktion nicht das Formular absenden würde) und viertens funktioniert XMLHttpRequest üblicherweise asynchron, sodass so ein Funktionsaufruf samt arbeiten mit dem Rückgabewert gar nicht möglich ist. Diese Zuweisung müsste im readystatechange-Handler stehen, der heißt bei dir alertInhalt.

    Wenn du da schnell Fortschritte machen willst, beauftrage jemanden, es für dich zu machen, oder versuche dich erst einmal an einer einfacheren Lösung. Denn dir das alles mal eben zu erklären, sodass du es verstehst und selbst programmieren kannst, wäre auch schon ein Elaborat für sich.

    Mathias