Ankündigung

Einklappen
Keine Ankündigung bisher.

Javascript/Ajax um ein Formular zu überprüfen!

Einklappen

Neue Werbung 2019

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

  • Javascript/Ajax um ein Formular zu überprüfen!

    Hi Leute.
    Ich versuch grad nen Formular zu überprüfen.
    Hab 4 Eingabefelder ( user, pass, repass, mail ) und möchte das vor dem Check überprüfen ob
    1. alles eingetragen ist.
    2. die beiden Passwörter übereinstimmen
    3. Der Benutzer/Mail nicht schon im System vorhanden sind.

    Ich dachte ich bin klug und nutze für 3. ajax, um die daten per Post an ein php script zu übergeben, was dann entweder 0 oder 1 zurückgibt.
    Soweit so gut.
    NUn bekomme ich aber leider jedes mal wenn ich das script aufrufe den Fehlercode request.status = 0.
    Ich hab erst vermutet das es mit der request.open url zusammenhängt weil ich nicht weiß ob ich die datei einhängen muss logisch zum Pfad der Datei in welcher es eingebaut ist, oder zum gesamtem Script.
    Meine index.php datei ( in welcher meine register.php datei eingebunden ist ) liegt im root verzeichnis. register.php und register_check.php sind in php/module/sites/ ..
    Aber nun hier erstmal der Code

    PHP-Code:
    <?php
    echo'
    <script type="text/javascript">
    <!--
    function CheckInput() 
    {
      var check;
      setRequest();    
     
        if(document.register.user.value == "" || document.register.pass.value == "" || document.register.repass.value == "" || document.register.mail.value == "") 
        { 
            document.getElementById(\'hinweis\').style.display = "block";        
            document.getElementById(\'hinweis\').innerHTML = "Bitte füllen Sie alle Felder aus!";
            return false;
        } 
        else if (document.register.pass.value != document.register.repass.value)
         {
            document.getElementById(\'hinweis\').style.display = "block";    
            document.getElementById(\'hinweis\').innerHTML = "Die beiden Passwörter stimmen nicht überein!";
            return false;
       }
      else if (document.register.pass.value.length<8 || document.register.pass.value.length<8)
        {
        document.getElementById(\'hinweis\').style.display = "block";
        document.getElementById(\'hinweis\').innerHTML = "Das Password muss mindestens aus 8 Zeichen bestehen";
        return false;
        }
      else if (check == false)
        {
        return false;
        }
        else
        { 
            document.getElementById(\'hinweis\').style.display = "none";        
        return true;    
        } 
    }

    function setRequest() {
            // Request erzeugen
            if (window.XMLHttpRequest) {
                request = new XMLHttpRequest(); // Mozilla, Safari, Opera
            } else if (window.ActiveXObject) {
                try {
                    request = new ActiveXObject(\'Msxml2.XMLHTTP\'); // IE 5
                } catch (e) {
                    try {
                        request = new ActiveXObject(\'Microsoft.XMLHTTP\'); // IE 6
                    } catch (e) {}
                }
            }

            // überprüfen, ob Request erzeugt wurde
            if (!request) {
                alert("Kann keine XMLHTTP-Instanz erzeugen");
                return false;
            } else {
                var url = "php/module/sites/register_check.php";
                // Request öffnen
                request.open(\'post\', url, true);
                // Request senden
                request.setRequestHeader(\'Content-Type\', \'application/x-www-form-urlencoded\');
                string = "user="+document.register.user.value+"&mail="+document.register.mail.value;
                request.send(string);
                // Request auswerten
                request.onreadystatechange = interpretRequest;
            }
        }

        // Request auswerten
        function interpretRequest() {
            switch (request.readyState) {
                // wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
                case 4:
                    if (request.status != 200) {
                        alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
                    } else {
                        var senden = request.responseText;
                        // den Inhalt des Requests in das <div> schreiben
                   if (senden=="1")
                  {
                    document.getElementById(\'hinweis\').innerHTML = "Der Benutzername/E-Mail Adresse ist schon vergeben.";
                    check = false;
                     }
                else if (senden=="0")
                     {
                    check = true;
                  }
                    }
                    break;
                default:
                    break;
            }
        } 


     
    //-->
    </script>

      <div id="register">
        <form name="register" method="post" onsubmit="return CheckInput();" action="http://www.recash.me/?action=doregister">
          <div class="register_user">
            <span style="float:left;">Benutzername:</span>
            <span style="float:right;"><input type="text" name="user" style="width:150px;" /></span>
          </div>
          <div class="register_pass">
            <span style="float:left;">Passwort:</span>
            <span style="float:right;"><input type="password" name="pass" style="width:150px;" /></span>
          </div>
          <div class="register_repass">
            <span style="float:left;">Passwort:</span>
            <span style="float:right;"><input type="password" name="repass" style="width:150px;" /></span>
          </div>
           <div class="register_repass">
            <span style="float:left;">E-Mail:</span>
            <span style="float:right;"><input type="text" name="mail" style="width:150px;" /></span>
          </div>
          <div id="hinweis" style="float:left;padding:15px;color:red;display: box"> 

            </div>
          <div class="register_botton">
            <input type="Submit" id="button" value="Registrieren" />
          </div>
        </form>
      </div>  
      '
    ;
    ?>

    Danke fürs Mühsame durchschauen ;)

  • #2
    Hallo,

    hat es einen Grund, dass du kein AJAX-fähiges Framework verwendest? Es ist etwas überflüssig, wenn wir jetzt noch versuchen müssen, deine eigene Implementierung von AJAX zu debuggen. Installier dir doch erstmal Firebug und schau, ob der Request überhaupt rausgeht und was er zurückliefert. Debugging per Firebug kannst du auch ganz einfach machen, in dem du console.log() verwendest.

    PS: Dein PHP-Code ist auch nicht wirklich sinnig, statt echo "dein <html>-Code" kannst du die PHP-Verarbeitung auch mit ?> beenden und nun normal HTML schreiben. Dein PHP-Editor wirds dir zusätzlich mit Syntaxhighlighting des HTML danken.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Zumal es sowieso sinnlos ist, für eine JavaScript-Frage den PHP-Code zu posten anstatt einfach dessen Ausgabe.
      Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

      Kommentar


      • #4
        Zitat von N4bla Beitrag anzeigen
        Ich hab erst vermutet das es mit der request.open url zusammenhängt weil ich nicht weiß ob ich die datei einhängen muss logisch zum Pfad der Datei in welcher es eingebaut ist, oder zum gesamtem Script.
        Ob der verwendete Pfad korrekt ist oder fehlerhaft, kriegst du ganz leicht selber raus, wenn du das Net-Panel von Firebug nutzt.
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Pfad ist soweit richtig , zumindest laut FireBug
          Die Anfrage wird auch gesendet mit dem richtigen Inhalt nur kommt halt nie eine Antwort an...

          Warum ich kein framework benutze ?
          Ich brauch so gut wie nie Ajax/javascript und deswegen wollte ich mir jquery o.ä. nicht aneignen

          Kommentar


          • #6
            Zitat von N4bla Beitrag anzeigen
            Die Anfrage wird auch gesendet mit dem richtigen Inhalt nur kommt halt nie eine Antwort an...
            Was als Antwort kommt, lässt sich mit Firebug auch sehr schön untersuchen ...

            Entweder interpretierst du die Antwort also falsch - oder dein serverseitiges Script reagiert falsch auf die Anfrage.
            [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

            Kommentar


            • #7
              Habs hingekriegt. Trotzdem danke

              Kommentar

              Lädt...
              X