request probleme

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • request probleme

    HalloHalo,

    ich arbeite gerade an einer Extension für ein Mediawiki-System. Dieses stellt einen Wizard bereit, welcher die benutzer bei der Erstellung neuer Artikel anleitet.

    Hierbei müssen die Benutzer in Stufe eins einen Artikelname und einen Oberbegriff angeben. Es soll also geprüft werden, ob beides angegeben wurde und ob ein Artikel mit diesem titel bereits existiert. Also muss ich da irgendwie mit php kommunizieren. Hier kommt also ajax ins Spiel.

    Das mediaWiki hat bereits ein framework integriert. SAJAX (nicht gerade jenes, welches ich üblicherweise verwende. bei Prototype würd ich einfach einen synchronen request loschicken und jenachdem true oder false zurückgeben). Wie gesagt bei sajax kenne ich mich nicht so aus.

    Hier nun mein Ansatz:
    PHP-Code:
    /* register Ajax function  */
    $wgAjaxExportList[] = 'wfAjaxValidateTitle';
    function 
    wfAjaxValidateTitle($title)
    {
            
    $title=Title::newFromText($title);

            
    $article=new Article($title);

            if ((
    $title->mArticleID != '0') && $article->exists())
                return 
    "1";
            else
                return 
    "0";

    und der js-teil
    Code:
            else if (elem1.value != '')
                {
    
                sajax_do_call("wfAjaxValidateTitle", [elem1.value], validateTitel);
                }
            }
        }
    
    function validateTitel(request)
        {
        if (request.status != 200)
            {
            alert("Error: " + request.status + " " + request.statusText + ": " + request.responseText);
            return;
            }
    
        var result = request.responseText;
    
        if (result == 1)
            {
            $("naw_title").focus();
            $("naw_title").className = 'focus';
            $("naw_title").value = 'Ein Artikel mit diesem Titel besteht bereits';
            return false;
            }
        }
    Hoffe ich habe mich halbwegs verständlich ausgedrückt und mir jemand helfen kann. Ansonsten wäre ich extrem suizidgefährdet, weil ich keinen Ausweg mehr sehe:mrgreen:

    Gruß
    derTrallala
    Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

  • #2
    Vielleicht erwähnst du noch einmal kurz, was denn überhaupt dein Problem ist??

    Kommentar


    • #3
      Hallo

      das Problem liegt hier:

      Code:
              else if (elem1.value != '')
                  {
      
                  sajax_do_call("wfAjaxValidateTitle", [elem1.value], validateTitel);
      //hier: return false oder true, je nach Ergebnis
                  }
      da soll, jenachdem, ob ein Titel bereits existiert, ein return true oder ein return false folgen.

      Das ist insofern wichtig, dass der Wizard bei einem fehler keine Seite weiterspringt.

      DerTrallala
      Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

      Kommentar


      • #4
        Ein ähnliches Problem hattest du doch letztens schon. Dann musst du halt in den Javascript Code gehen und dort sajax Request syncron machen. Oder du ließt die Dokumentation und schaust wie man das am besten realisieren kann.
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #5
          Also,

          ich finde da weder eine anständige Doku, noch einen Hinweis wie ich einen synchronen request realisiere.

          Ich muss Dir recht geben, das Problem bestand schon mal. Dann hab ich das mit prototype realisiert. Aber das führt zu Konflickten mit dem wiki in vereinzelten Bereichen.

          LG
          derTrallala
          Manchmal verliert ma eben ... und manchmal gewinnen die Anderen

          Kommentar


          • #6
            Ich denke du solltest einfach die Ajax Request so lassen wie sie sind, nämlich asynchron und dir lieber überlegen die du vernünftig das Problem löst.
            Du könntest zum Beispiel das Abschicken des Formulars grundsätzlich verhindern und das Formular abschicken wenn die Validierung erfolgreich war. Ich frag mich auch warum du über Ajax validieren und dann das Formular normal über HTTP POST abschicken willst.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar

            Lädt...
            X