jonas: PHP-Funktion mit JavaScript (AJAX) aufrufen

Hallo,

Ich habe folgendes Problem:
Ich möchte, dass bei meinem Formular die Inhalte der Felder bei einer Änderung (onChange) automatisch in ein XML-File geschrieben werden.

Ich habe bereits eine PHP-Funktion, welche dieses XML-File erstellt. Allerdings weiss ich nicht, wie ich diese Funktion mit AJAX (bzw. JavaScript) aufrufen bzw. den Feldinhalt an die Funktion übergeben kann, ohne, dass das Formular abgeschickt wird.

Vielden Dank für eure Hilfe,

Grüsse Jonas

  1. Hi,

    Ich habe bereits eine PHP-Funktion, welche dieses XML-File erstellt. Allerdings weiss ich nicht, wie ich diese Funktion mit AJAX (bzw. JavaScript) aufrufen bzw. den Feldinhalt an die Funktion übergeben kann, ohne, dass das Formular abgeschickt wird.

    Du kannst vom Client aus keine PHP-Funktion aufrufen - weder mit AJAX, noch mit JavaScript, Flash, Java oder sonstwas. Du kannst lediglich einen HTTP-Request absetzen; genau so, wie es bei einem Linkklick, einem Formular-Submit oder dem manuellen Eingeben einer URL in die Adressleiste des Browsers geschieht. Alles, was Du auf PHP-Seite machen können möchtest, muss auf diesen Aufrufen basieren.

    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. Du kannst vom Client aus keine PHP-Funktion aufrufen - weder mit AJAX, noch mit JavaScript, Flash, Java oder sonstwas.
      Okey, vielen Dank für deine Antwort.

      Gibt es evtl. eine andere Lösung wie ich "on the fly" eine XML-Datei erzeugen kann (ohne absenden des Formulars)? Andere Sprache zum erstellen von XML? Könntest du mir da einen Tip geben?

      1. Gibt es evtl. eine andere Lösung wie ich "on the fly" eine XML-Datei erzeugen kann (ohne absenden des Formulars)? Andere Sprache zum erstellen von XML? Könntest du mir da einen Tip geben?

        Du kannst getrost PHP verwenden, nur eben keine Funktion, sondern ein Script, das diese Funktion beinhaltet. Gibt dieses Script gültiges XML zurück, dann steht einer clientseitigen Verarbeitung fast nichts mehr im Weg. Procedere:

        • Request auf das PHP-Script mittels XMLHttpRequest-Objekt
        • PHP-Script beantwortet den Request mit gültigem XML
        • Entgegennehmen und Verarbeiten beim Client.

        Beachte dabei die "Same Origin Policy".

        Siechfred

        --
        [NaN]
        1. Gibt es evtl. eine andere Lösung wie ich "on the fly" eine XML-Datei erzeugen kann (ohne absenden des Formulars)? Andere Sprache zum erstellen von XML? Könntest du mir da einen Tip geben?

          Du kannst getrost PHP verwenden, nur eben keine Funktion, sondern ein Script, das diese Funktion beinhaltet. Gibt dieses Script gültiges XML zurück, dann steht einer clientseitigen Verarbeitung fast nichts mehr im Weg. Procedere:

          • Request auf das PHP-Script mittels XMLHttpRequest-Objekt
          • PHP-Script beantwortet den Request mit gültigem XML
          • Entgegennehmen und Verarbeiten beim Client.

          Beachte dabei die "Same Origin Policy".

          Siechfred

          Okey, vielen Dank für deine Antwort, das hat mir schonmal zimlich geholfen, funktioniert auch soweit.
          Aber wie bringe ich nun die Feldinhalte meiner Formularfelder in den PHP-Script?
          Wie man die Felder mit JavaScript ausliest weiss ich, (var inhalt = document.Eingabeformular.textfeld.value) aber wie bringe ich diese JavaScript Variable in meinen PHP-Script?

          1. Hi,

            Aber wie bringe ich nun die Feldinhalte meiner Formularfelder in den PHP-Script?
            Wie man die Felder mit JavaScript ausliest weiss ich, (var inhalt = document.Eingabeformular.textfeld.value) aber wie bringe ich diese JavaScript Variable in meinen PHP-Script?

            Du bringst sie lediglich in den Request, entweder als GET- oder als POST-Parameter. Wie das geht, hängt von Deiner Handhabung der XMLHttpRequest-Objekte ab.

            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. Hi,

              Aber wie bringe ich nun die Feldinhalte meiner Formularfelder in den PHP-Script?
              Wie man die Felder mit JavaScript ausliest weiss ich, (var inhalt = document.Eingabeformular.textfeld.value) aber wie bringe ich diese JavaScript Variable in meinen PHP-Script?

              Du bringst sie lediglich in den Request, entweder als GET- oder als POST-Parameter. Wie das geht, hängt von Deiner Handhabung der XMLHttpRequest-Objekte ab.

              Cheatah

              Hmm, ich komme bei deiner Antwort nicht ganz draus. Mein Code sieht folgendermassen aus:

              // globale Instanz von XMLHttpRequest
              var xmlHttp = false;

              // XMLHttpRequest-Instanz erstellen
              // ... für Internet Explorer
              try {
               xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
              } catch(e) {
               try {
                xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
               } catch(e) {
                xmlHttp  = false;
               }
              }

              // ... für Mozilla, Opera und Safari
              if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
               xmlHttp = new XMLHttpRequest();
              }

              function writeXML(){
               if (xmlHttp) {
                xmlHttp.open('POST', 'write_xml.php', true);
                 xmlHttp.send(null);
               }
              }

              Die Datei "write_xml.php" sieht so aus:

              <?PHP
               $inhalt = "Das ist der Text";

              $xml_text = "<?xml version="1.0"?>
               <main>
                <inhalt>$inhalt</inhalt>
               </main>";
               $fp = fopen ("note.xml","w");
               fwrite($fp,$xml_text);
               fclose($fp);
               echo "XML-Datei wurde angelegt!";
              ?>

              Anstelle der Variable $inhalt möchte ich jetzt z.B. den Inhalt des Textfeldes mit dem Namen "textfeld" einfügen (var var_inhalt = document.Eingabeformular.textfeld.value).
              Wie kann ich das machen?

              1. Wie kann ich das machen?

                http://www.captain.at/howto-ajax-form-post-request.php (erster Treffer einer Google-Suche nach "AJAX POST").

                Siechfred

                --
                [NaN]
                1. Wie kann ich das machen?

                  http://www.captain.at/howto-ajax-form-post-request.php (erster Treffer einer Google-Suche nach "AJAX POST").

                  Siechfred

                  Okey, dieser Link hat mir ziemlich weitergeholfen.
                  Es funktioniert nun alles.

                  vielen dank für die hilfe!

                  grüsse jonas