Zum Inhalt springen

xAjax - Autocomplete - readyState und onreadystatechange

Erstellt am 17. Juni 2009 · 1 Antwort · letzte Antwort am 17. Juni 2009

Tags: JavaScript & AJAX, Frage

digitalfreak ·

Hallo nochmal

ich bin gerade dabei eine kleine Ajax sache zu basteln.

Funktioniert auch soweit schon perfekt, bis auf wenn man den Suchbegriff sehr schnell eingibt kommt das ding ins stocken.

Gibt es irgend eine möglichkeit um sowas abzufangen? Ich habe gelesen, dass onreadystatechange dem Script sagt, wann es fertig ist?!

Was muss ich machen, dass das nicht mehr so stockt/wackelt nachhängt usw.

Bis jetzt:
<input onkeyup="funktionsaufruf">
das geht alles auf die mit xAjax registrierte PHP funktion.
Aber irgendwo muss ich doch noch was machen können oder?

viele grüße

digitalfreak ·

Habs mitm kleinen Timer gemacht.

In der PHP Klasse

$makeRequestFunktion = $this->prefixId . 'processFormData(xajax.getFormValues(\'xajax_form\'));';
          $GLOBALS['TSFE']->additionalHeaderData[$this->prefixId."Buffering"] = ("
              <script>
              var OnKeyRequestBuffer = 
              {
                  bufferText: false,
                  bufferTime: 10,
                  
                  modified : function(strId)
                  {
                          setTimeout('OnKeyRequestBuffer.compareBuffer(\"'+strId+'\",\"'+xajax.$(strId).value+'\");', this.bufferTime);
                  },
                  
                  compareBuffer : function(strId, strText)
                  {
                      if (strText == xajax.$(strId).value && strText != this.bufferText)
                      {
                          this.bufferText = strText;
                          OnKeyRequestBuffer.makeRequest(strId);
                      }
                  },
                  
                  makeRequest : function(strId)
                  {
                      $makeRequestFunktion
                  }
              }
              </script>
          ");

$onchange = ' onkeyup="OnKeyRequestBuffer.modified(\'searchword\');" ';

So gehts!