Ajax: Funktion von einer Seite auf anderer

chuvak

Erfahrenes Mitglied
Ich habe 2 Seiten: "Anzeige" und "Formular". In das Formular wird Text eingegeben, welches in eine Datenbank geschrieben wird. Auf der Seite Anzeige wird dann der Text aus der DB ausgelesen.
Da das Neuladen der Seite Anzeige relativ umständig wäre, habe ich mir gedacht, ruf ich beim Schließen des Fensters Formulars per "<body onunload>" eine Ajax-Funktion auf, die automatisch den Inhalt der Anzeige aktualisiert.

Ajax:
Code:
function CreateXmlHttpObjet()
{
  var xmlHttpObject = null;
  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttpObject = new XMLHttpRequest();
  }
  catch( e )
  {
    // Internet Explorer
    try
    {
      xmlHttpObject = new ActiveXObject( "Msxml2.XMLHTTP" );
    }
    catch( e )
    {
      xmlHttpObject = new ActiveXObject( "Microsoft.XMLHTTP" );
    }
  }
  return xmlHttpObject;
}

function loadContent()
{
  xmlHttpObject = CreateXmlHttpObjet();
  xmlHttpObject.open("post","anzeige.php?action=ajax", true);
  document.getElementById("meindiv").innerHTML = xmlHttpObject.responseText;
  return false;
}
Seite "Anzeige":
Code:
if(isset($_POST[action]))
{
  echo "Das ist Ajax"; // zum Testen nur ein Beispiel
  exit();
}

echo '<div id="meindiv">der alte Text</div>';
Leider ändert sich nichts.
Die Fehlerkonsole gibt mir Folgendes aus:
Fehler: document.getElementById("meindiv") is null
Ist meine Idee überhaupt machbar?
 
Zuletzt bearbeitet:
Moin,

Da das Neuladen der Seite Anzeige relativ umständig wäre, habe ich mir gedacht, ruf ich beim Schließen des Fensters Formulars per "<body onunload>" eine Ajax-Funktion auf, die automatisch den Inhalt der Anzeige aktualisiert.

Erstmal prinzipiell: das Neuladen der Seite kannst du per onunload nicht unterbinden, es wird in jedem Fall passieren.
Du könntest also entweder eine eigene Schaltfläche verwenden, über welche der Reload per AJAX vorgenommen wird, oder aber den onbeforeunload-Event überwachen(dieser ist jedoch kein offizieller Standard, ich kann dir jetzt nicht genau sagen, welche Browser diesen momentan unterstützen, die wichtigsten sollten es aber tun)


En Detail:
Deine Fehlermeldung besagt, dass kein Element mit der ID meindiv existiert...wo ist es hin?:confused:

Dann hast du in deiner Funktion loadContent() einige Fehler im Ablauf.
Du musst
  1. Request-Objekt erstellen(hast du)
  2. Verbindung öffnen(hast du)
  3. eine Funktion definieren, welche beim onreadystate-Event des Request-Objektes die Antwort des Servers verarbeitet(fehlt bei dir...du weist sofort xmlHttpObject.responseText, was zu diesem Zeitpunkt noch nichts liefert)
  4. den Request senden mittels der Methode send() (fehlt auch)
 
Zurück