Niels: Ich suche Hilfe um ein AJAX-Script Mediawiki tauglich zu machen.

Hi,
habe ein an sich funktionierendes AJAX-Script (Daten aus einem Formular werden an ein PHP-Script geschickt, wo eine Datenbankabfrage erfolgt und die Ergabnisse anschließend ausgegeben.). Dieses möchte ich nun als Spezialseite in mein Wiki integrieren.

Bisherige Index.html:

  
<script type="text/javascript">var http_request = false;  
   function makeRequest(url, parameters) {  
      http_request = false;  
      if (window.XMLHttpRequest) { // Mozilla, Safari,...  
         http_request = new XMLHttpRequest();  
         if (http_request.overrideMimeType) {  
         	// set type accordingly to anticipated content type  
            //http_request.overrideMimeType('text/xml');  
            http_request.overrideMimeType('text/html');  
         }  
      } 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('Cannot create XMLHTTP instance');  
         return false;  
      }  
      http_request.onreadystatechange = alertContents;  
      http_request.open('GET', url + parameters, true);  
      http_request.send(null);  
   }  
  
   function alertContents() {  
      if (http_request.readyState == 4) {  
         if (http_request.status == 200) {  
            //alert(http_request.responseText);  
            result = http_request.responseText;  
            document.getElementById('myspan').innerHTML = result;  
         } else {  
            alert('There was a problem with the request.');  
         }  
      }  
   }  
  
   function get(obj) {  
      var getstr = "?";  
      for (i=0; i<obj.childNodes.length; i++) {  
         if (obj.childNodes[i].tagName == "INPUT") {  
            if (obj.childNodes[i].type == "text") {  
               getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";  
            }  
            if (obj.childNodes[i].type == "checkbox") {  
               if (obj.childNodes[i].checked) {  
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";  
               } else {  
                  getstr += obj.childNodes[i].name + "=&";  
               }  
            }  
            if (obj.childNodes[i].type == "radio") {  
               if (obj.childNodes[i].checked) {  
                  getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";  
               }  
            }  
         }  
         if (obj.childNodes[i].tagName == "SELECT") {  
            var sel = obj.childNodes[i];  
            getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";  
         }  
  
      }  
      makeRequest('getuser.php', getstr);  
   }  
</script>  
  
<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">  
<!-- 	  
	name: muss fortlaufend nummerriert sein, wird sum erstellen des filters benötigt  
	value: enthält den Filterwert, Spalte und gesuchten Spaltenwert  
-->  
Blütensymmetrie<br>  
<input type="checkbox" name="0" value="bluetensymmetrie = 0"> strahlig/radiär<br>  
<input type="checkbox" name="1" value="bluetensymmetrie = 1"> bilateral/disymmetrisch<br>  
<input type="checkbox" name="2" value="bluetensymmetrie = 2"> zygomorph/dorsiventral<br>  
<br>  
Blütenstände<br>  
einfach-razemöse Infloreszenzenzen:<br>  
<input type="checkbox" name="3" value="bluetenstaende = 0"> geschlossene Traube<br>  
<input type="checkbox" name="4" value="bluetenstaende = 1"> offene Traube<br>  
<input type="checkbox" name="5" value="bluetenstaende = 2"> Doldentraube<br>  
<input type="checkbox" name="6" value="bluetenstaende = 3"> Ähre<br>  
<input type="checkbox" name="7" value="bluetenstaende = 4"> Kätzchen<br>  
<input type="checkbox" name="8" value="bluetenstaende = 5"> Zapfen<br>  
<input type="checkbox" name="9" value="bluetenstaende = 6"> Kolben<br>  
<input type="checkbox" name="10" value="bluetenstaende = 7"> Köpfchen/Körbchen<br>  
<input type="checkbox" name="11" value="bluetenstaende = 8"> Dolde<br>  
zusammengesetzt-razemöse Infloreszenzenzen:<br>  
<input type="checkbox" name="12" value="bluetenstaende = 9"> Rispe<br>  
<input type="checkbox" name="13" value="bluetenstaende = 10"> Doldenrispe/Ebenstrauß<br>  
<input type="checkbox" name="14" value="bluetenstaende = 11"> Spirre/Trichterrispe<br>  
<input type="checkbox" name="15" value="bluetenstaende = 12"> Doppeltraube<br>  
<input type="checkbox" name="16" value="bluetenstaende = 13"> Zusammengesetzte Ähre<br>  
<input type="checkbox" name="17" value="bluetenstaende = 14"> Zusammengesetzte Dolde<br>  
Zymöse Infloreszenzen<br>  
<input type="checkbox" name="18" value="bluetenstaende = 15"> Diachsium<br>  
<input type="checkbox" name="19" value="bluetenstaende = 16"> Pleioachsium/Trugdolde<br>  
<input type="checkbox" name="20" value="bluetenstaende = 17"> Wickel<br>  
<input type="checkbox" name="21" value="bluetenstaende = 18"> Doppelwickel<br>  
<input type="checkbox" name="22" value="bluetenstaende = 19"> Schraubel<br>  
<input type="checkbox" name="23" value="bluetenstaende = 20"> Doppelschraubel<br>  
<input type="checkbox" name="24" value="bluetenstaende = 21"> Thyrsus<br>  
  
<br>  
<input type="button" name="button" value="Submit"  
   onclick="javascript:get(this.parentNode);">  
<input type="reset" value=" Abbrechen">  
</form>  
  
<br><br>  
Server-Response:<br>  
<span name="myspan" id="myspan"></span>

Kann mir jemand erklären was ich anders machen muss?

PS: Habe $wgUseAjax in LocalSettings.php auf true gesetzt und mittlerweile auch diese Seite gefunden Link. Komme leider trozdem nicht weit.

Grüße Niels

  1. hi,

    Kann mir jemand erklären was ich anders machen muss?

    Anders als was?

    Hotte

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. Anders wie das gepostete Script, damit ich es in mein Wiki integrieren kann.

      War vielleicht etwas missverständlich, habe schon eine Spezialseiten-Rohling erstellt, in den das Script theoretisch nur noch eingefügt werden muss. Allerdings funktioniert nach dem integrieren der AJAX Part nicht mehr.

      Das ist der Aktuelle stand der Dinge. Einfach auf Submit klicken und die Fehlermeldung kommt.

      1. hi,

        Das ist der Aktuelle stand der Dinge. Einfach auf Submit klicken und die Fehlermeldung kommt.

        Der Request geht schonmal raus...
        Klappt Deine DB-Anbindung serverseitig? Umgehe die mal und gib irgendeinen Text zurück in der Response. Vorher den richtigen header "Content-type: text/html" nicht vergessen.

        Hotte

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
        1. hi,

          »» Das ist der Aktuelle stand der Dinge. Einfach auf Submit klicken und die Fehlermeldung kommt.

          Der Request geht schonmal raus...
          Klappt Deine DB-Anbindung serverseitig? Umgehe die mal und gib irgendeinen Text zurück in der Response. Vorher den richtigen header "Content-type: text/html" nicht vergessen.

          Hotte

          Gleiche Fehlermeldung, irgendetwas ist nicht Wiki kompatibel, da das Scribt ausserhalb des Wikis einwandfrei funktioniert.
          Was auch sein könnte ist, das sich etwas dadurch geändert hat, das das Formular mit dem AJAX Script erst in einer Variablen gespeichert und dann ausgegeben wird.

          1. hi,

            Gleiche Fehlermeldung,

            Naja, wenn kein status 200 kommt, kommt ein Anderer, der steht in:

            http_request.status

            Ebenfalls hilfreich ist das error_log im Webserver, falls Du da ran kommst.

            Hier stehen die Basics

            Hotte

            --
            Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
            1. hi,

              »» Gleiche Fehlermeldung,

              Naja, wenn kein status 200 kommt, kommt ein Anderer, der steht in:

              http_request.status

              Ebenfalls hilfreich ist das error_log im Webserver, falls Du da ran kommst.

              Hier stehen die Basics

              Hotte

              THX für die zusätzliche AJAX Anleitung :-)
              Hab bislang nur eine auf Englisch (w3school) gefunden, ^^aber so richtig verstanden hab ich da nicht alles ;-).

              Der Response-Code ist 500, hab auch schon nachgeschlagen was es bedeutet:

              500 Internal Server Error
              Teilt dem Client mit, dass der Server einen internen Fehler entdeckt hat und deshalb den Request nicht beantworten kann.

              Und hier einmal die letzten 6 Zeilen meiner LogDatei:

              78.50.88.243 - - [06/Mar/2009:11:29:52 +0100] "GET /index.php/Special:MyExtension HTTP/1.1" 200 144 "http://forum.de.selfhtml.org/my/?t=184092&m=1220342" "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)"
              78.50.88.243 - - [06/Mar/2009:11:29:52 +0100] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)"
              78.50.88.243 - - [06/Mar/2009:11:29:54 +0100] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)"

              91.0.73.87 - - [06/Mar/2009:13:44:06 +0100] "GET /index.php/Special:MyExtension HTTP/1.1" 200 144 "http://forum.de.selfhtml.org/my/?t=184092&m=1220658" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)"
              91.0.73.87 - - [06/Mar/2009:13:44:07 +0100] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)"
              91.0.73.87 - - [06/Mar/2009:13:44:10 +0100] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)"

  2. Hi,
    habe ein an sich funktionierendes AJAX-Script (Daten aus einem Formular werden an ein PHP-Script geschickt, wo eine Datenbankabfrage erfolgt und die Ergabnisse anschließend ausgegeben.). Dieses möchte ich nun als Spezialseite in mein Wiki integrieren.

    Hallo, du findest unter http://www.mediawiki.org/wiki/Manual:Special_pages eine Anleitung zur Erstellung eigener Spezialseiten.

    Viel Erfolg. Raymond.

    --
    Raimond Spekking
    http://www.mediawiki-beratung.de