Formularänderungen und XMLHttpRequest

garnixwisser

Grünschnabel
Hallo Leute,

nach dem ich dachte das meine Ajax-Anforderung für mein neues Registrierungsformular musste ich feststellen das es doch ein Problem hat. Ich hab es auch schon mal in ein Ajax-Forum eingestellt doch dort sind wohl nicht sehr viele Member dewegen versuche ich es nochmal bei euch denn hier wurde mir ja schon gut geholfen. Also..
Ich baue an einer Registrierungsmaske die bei der Eingabe des Users die Angaben prüft. Wenn die Maske das erste Mal gefüllt wird läuft die Prüfung auch sauber durch nur wenn der User dann hingeht und ein Feld ändert wird zwar noch der httpRequest abgesetzt aber die Auswertungsfunktion wird nicht mehr gestartet.
Hier der Code der drei Funktionen:
Code:
                  <script language="JavaScript"> 
                        var g_id_flag = 0; 
                        var g_uid = ""; 
                        var g_xml_http = false; 

                        function init_xml() 
                        { 
                           if (typeof(XMLHttpRequest) != 'undefined') 
                           { 
                                           g_xml_http = new XMLHttpRequest(); 
                            } 
                                if (!g_xml_http) 
                                { 
                                        try 
                                        { 
                                                g_xml_http  = new ActiveXObject("Msxml2.XMLHTTP"); 
                                        } 
                                        catch(e) 
                                        { 
                                                        try 
                                                { 
                                                            g_xml_http  = new ActiveXObject("Microsoft.XMLHTTP"); 
                                                        } 
                                                catch(e) 
                                                { 
                                                            g_xml_http  = false; 
                                                        } 
                                        } 
                                }//if 
                        } 
                        function check_db() 
                        { 
                                if(g_xml_http) 
                                { 
                                        g_xml_http.onreadystatechange = db_ergebnis;                                        
                                        g_xml_http.open('GET', 'test.php?g_uid=' g_uid, true); 
                                        g_xml_http.send(null); 
                                        alert("333333"); 
                                } 
                                else 
                                { 
                                        alert("XML-Request konnte nicht erstellt werden !"); 
                                } 
                        }//function 

                        function db_ergebnis() 
                        { 
                                alert(g_xml_http.readyState); 
                                if(g_xml_http.readyState == 4) 
                                { 
                                alert(g_xml_http.status); 
                                if (g_xml_http.status == 200) 
                                { 
                                if(g_xml_http.responseText == "1") 
                                { 
                                  alert('1'); 
                                  g_id_flag = 1; 
                                } 
                                else 
                                { 
                                  g_id_flag = 0; 
                                } 

                            } 
                            else 
                            { 
                                alert('Bei dem Request ist ein Problem aufgetreten.'); 
                            } 
                                } 
                        }
Ich hoffe einer von euch hat eine Idee wo ich mal wieder was komplett falsch gemacht habe
Die "alerts" benutze ich zum prüfen von daher weiß ich das er beim zweiten mal nicht mehr in die Funktion "db_ergebnis()" kommt.
Vielleicht noch ne kleine Zusatzerklärung. Die FUnktion "init_xml()" wird vom BodyTag der Seite aufgerufen so das dann ja "g_xml_http" schon initialisiert ist und bleibt. Die Hauptfunktion "check_db()" wird jedes mal bei einer Änderung im Feld aufgerufen nur die Auswertung halt nicht mehr
 
Hi,

versuche mal, das Requestobjekt nicht im onload-Event des Bodys zu initialisieren, sondern
jedes mal, wenn Du es benötigst.
Code:
function check_db(){
  if(g_xml_http){
    g_xml_http = null;
  }
  init_xml();

  if(g_xml_http){
                g_xml_http.onreadystatechange = db_ergebnis;
                g_xml_http.open('GET', 'test.php?g_uid=' + g_uid, true);
                g_xml_http.send(null);
  } else {
    alert("XML-Request konnte nicht erstellt werden !");
  }
}  //function
Weiterhin hat in der Funktion ein Plus gefehlt - siehe Markierung.

Vielleicht hilft Dir das weiter.

Ciao
Quaese
 
@Quaese: Danke für deine Antwort.
Warum das "+" verschwunden ist weiß ich nicht im orgnial war es drin. Ich hab jetzt mal ne kleine Änderung am Quelltext gemacht und die Initialisierung in die "Sende" funktion gepackt und mit Firefox läuft es. Nur der IE muckt noch rum :mad:
Code:
                        function check_db()
                        {
                                init_xml();
                                .
                                ..
 

Neue Beiträge

Zurück