Ankündigung

Einklappen
Keine Ankündigung bisher.

ajax-php-problem

Einklappen

Neue Werbung 2019

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

  • ajax-php-problem

    also ich hab mir ein tutorial durchgelesen und den code in einer ajax.js geschrieben:

    Code:
    function getHTTPObject(){
       if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
       else if (window.XMLHttpRequest) return new XMLHttpRequest();
       else {
          alert("Your browser does not support AJAX.");
          return null;
       }
    }   
     
    // Change the value of the outputText field
    function setOutputdiv(){
    	if(httpObject.readyState == 4){
    		document.getElementById('divusername').innerHTML = httpObject.responseText;
    
        }
    
    }
    
     
    // Implement business logic    
    function doWork(){    
        httpObject = getHTTPObject();
        if (httpObject != null) {
            httpObject.open("GET", "check.php?check=username&text="
                            +document.getElementById('username').value, true);
            httpObject.send(null); 
            httpObject.onreadystatechange = setOutputdiv;
        }
    }
    
     
    var httpObject = null;
    der html-Teil sieht so aus:

    Code:
    <input type="text"  onkeyup="doWork();" name="username" id="username">
    
    	<div id="divusername"></div>
    Es läuft alles wunderbar. Nur ich will das ganze bei mehreren Feldern machen, also habe ich mir gedacht, man kann die funktionen so umschreiben, dass man quasi ein wert übergibt.

    Mein Gedanke war es so, dass der HTML-Teil so aussieht:
    Code:
    <input type="text"  onkeyup="doWork('username');" name="username" id="username">
    
    	<div id="divusername"></div>
    Beim Javascript müsste man das ja dann so umschreiben:

    Code:
    function doWork(ajaxtarget){    
        httpObject = getHTTPObject();
        if (httpObject != null) {
            httpObject.open("GET", "check.php?check=" + ajaxtarget + "&text="
                            +document.getElementById(ajaxtarget).value, true);
            httpObject.send(null); 
            httpObject.onreadystatechange = setOutputdiv;
        }
    }

    Das funktioniert auch noch. Doch ich muss ja auch den jeweiligen Inhalt der Div-Boxen ändern. Hab ich mir so vorgestellt:

    Code:
    function setOutputdiv(ajaxtargetid){
    	if(httpObject.readyState == 4){
    		document.getElementById(ajaxtargetid).innerHTML = httpObject.responseText;
    
        }
    
    }
    
    function doWork(ajaxtarget){    
        httpObject = getHTTPObject();
        if (httpObject != null) {
            httpObject.open("GET", "check.php?check=" + ajaxtarget + "&text="
                            +document.getElementById(ajaxtarget).value, true);
            httpObject.send(null); 
            httpObject.onreadystatechange = setOutputdiv("div" + ajaxtarget);
        }
    }

    Aber sobald ich in der doWork-Funktion bei "setOutputdiv" eine Klammer hintermache, geschweige denn einen Inhalt, der übergeben werden soll, ändert er ncihts mehr in der Div box, und sie bleibt leer. Die Abfrage mit richtigem responseText kommt aber.

    Woran kann das liegen?? Oder Wie geht es anders??

  • #2
    Stell mal bitte eine funktionierende und eine nicht funktionierende Version online. So blick ich nicht durch ..

    Kommentar


    • #3
      also die Funktionierende ist:

      http://www.rbs-page.de/login/test.htm

      und die die nicht geht:

      http://www.rbs-page.de/login/test2.htm


      falls du es brauchst. 123 als User gibt es und 1234 nicht. Sieht man ja bei der funktionierenden Version.

      Kommentar


      • #4
        hat jemand vielleicht noch eine idee?? Sonst muss ich für jedes Feld eine eigene Funktionen machen!

        Kommentar


        • #5
          ok ich habs hinbekommen. Falls es jemanden interessiert:
          Code:
          function doWork(ajaxtarget){    
              httpObject = getHTTPObject();
              if (httpObject != null) {
                  httpObject.open("GET", "check.php?check=" + ajaxtarget + "&text="
                                  +document.getElementById(ajaxtarget).value, true);
          		httpObject.onreadystatechange = function(){
          			if(httpObject.readyState == 4){
          				document.getElementById('div_' + ajaxtarget).innerHTML = httpObject.responseText;
          			}
          		}
          		httpObject.send(null);
              }
          }

          Kommentar

          Lädt...
          X