php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-06-2008, 11:22
martin2
 Registrierter Benutzer
Links : Onlinestatus : martin2 ist offline
Registriert seit: May 2005
Ort: Duisburg
Beiträge: 79
martin2 ist zur Zeit noch ein unbeschriebenes Blatt
martin2 eine Nachricht über Skype™ schicken
Standard Problem mit Ajax.Autocompleter

Hallo ich habe ein Eingabefeld welches mit
ajax.Autocompleter werte anzeigt, das funzt auch ganz gut,
nur habe ich im Firebug bemerkt das der ajax Request mehr als einmal
abgeschossen wird.

1 Zeichen kein Request
2 zeichen 1 mal
3 zeichen 2 mal
4 zeichen 3mal usw.


PHP-Code:
var InputWatcher=Class.create();
InputWatcher.prototype = {
   
initialize: function(field)
   {
      
     
this.field=$(field);
     if(
func=='getFebiNum')
     {
         
this.field.onkeyup=this.getNum.bindAsEventListener(this); 
     }
     
           
      
   },
   
getFebiNum:function(evt)
   {
      var 
taste=evt.keyCode;
        if(
taste==13)
      {
         var 
value=$('hersteller').value;
         
alert(value);
         new 
Ajax.Updater('result_table','/ajax/ArtikelByNum/', {methode:'post',parameters:'text='+value});
      }
      else if(
taste<38 || taste>40 )
      {
         new 
Ajax.Autocompleter('hersteller','box_febi','/ajax/SuggestNumbers/', {paramName'text'});
      }
   }
  
}

var 
watcher =  new InputWatcher('hersteller'); 
Wenn man das auf auf paar hundert User hochrechnet wird das narülich untragbar..... warum passiert das und wie kann man das verhinder?

Danke schon mal
__________________
<?php echo "ad astra"; ?>
www.utopiafuture.de

Geändert von martin2 (19-06-2008 um 12:21 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-06-2008, 14:27
zerni
 Member
Links : Onlinestatus : zerni ist offline
Registriert seit: Oct 2006
Beiträge: 268
zerni ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ganz einfach: du musst nach jedem Zeichen ein counter runterlaufen lassen von 500ms. Erst wenn dieser runtergelaufen ist und kein Zeichen währenddessen kommt wird der request gesendet. Wenn doch ein Zeichen kommt wird der counter zurück gesetzt und das Spiel beginnt von Vorne.

Ich mache es immer in Prototype, deshalb kann ich dir gerade nicht den direkten Code in JS geben

PHP-Code:
<input type="text" onClick="startObserver(this)">

var 
obs;
    function 
startObserver(element){
     if(!
obs){
          
obs = new Form.Element.Observer(
          
input,
          
0.5,
          function(
elvalue){
            if(
input.value.length 2)  new Ajax.Updater(elementsearch.php,
                     { 
method'post'parameters"string"+searchstring});
          }
        )
      }
    } 
info bei prototype:http://www.prototypejs.org/api/timedObserver
__________________
Killerspiele sollten in der Größenordnung von Kinderpornografie eingeordnet werden.(G. Beckstein)
- ...und solche Behauptungen in "falsches Resourcenmanagement"

Geändert von zerni (19-06-2008 um 14:40 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 19-06-2008, 14:50
martin2
 Registrierter Benutzer
Links : Onlinestatus : martin2 ist offline
Registriert seit: May 2005
Ort: Duisburg
Beiträge: 79
martin2 ist zur Zeit noch ein unbeschriebenes Blatt
martin2 eine Nachricht über Skype™ schicken
Standard

mit einer zeitverzögerung habe ich es auchon versucht, das grundproblem beliebt aber er setzt bei 4 Buchstaben 3 identische Request ab....völlig identische Requests.....

(benutze übrigends scriptaculous, den großen Bruder von prototype)
__________________
<?php echo "ad astra"; ?>
www.utopiafuture.de

Geändert von martin2 (19-06-2008 um 14:54 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 19-06-2008, 15:54
E.T.
 Registrierter Benutzer
Links : Onlinestatus : E.T. ist offline
Registriert seit: Nov 2003
Beiträge: 240
E.T. ist zur Zeit noch ein unbeschriebenes Blatt
E.T. eine Nachricht über ICQ schicken
Standard

Habe dies durchgetestet mit Prototype 1.6.0, script.aculo.us 1.8.0 und kann den beschriebenen Effekt nicht feststellen.

Code:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="src/prototype.js" type="text/javascript"></script>
<script src="src/scriptaculous.js" type="text/javascript"></script>

<style type="text/css" media="screen">
    .selected { background-color: #888; }
</style>

<script type="text/javascript" language="javascript">

window.onload = function() {
	new Ajax.Autocompleter('inputfeld','autocompleterfeld','autocomplete_result.html', {afterUpdateElement: macheEtwas});
}

function macheEtwas(){
	alert('Du hast '+$('inputfeld').value+' ausgesucht.');
	return false;
}

</script>

</head>
<body>

<form>
<input id="inputfeld" type="text" style="width:220px;"/>
<div id="autocompleterfeld" style="display:none;border:1px solid black;background-color:#ffffee;"></div>
</form>

</body>
</html>
__________________
Download ET-Chat v3.x.x
Mit Zitat antworten
  #5 (permalink)  
Alt 20-06-2008, 00:20
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
mit einer zeitverzögerung habe ich es auchon versucht, das grundproblem beliebt aber er setzt bei 4 Buchstaben 3 identische Request ab....völlig identische Requests.....
Ist doch ganz einfach: Du erzeugst jedes mal einen neuen Autocompleter - das ist doch Unsinn:
Code:
         this.field.onkeyup = ... getFebiNum:function(evt) {
...
         new Ajax.Updater('result_table','/ajax/ArtikelByNum/', {methode:'post',parameters:'text='+value});
... / ...
         new Ajax.Autocompleter('hersteller','box_febi','/ajax/SuggestNumbers/', {paramName: 'text'});
  }
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #6 (permalink)  
Alt 20-06-2008, 01:48
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von martin2
(benutze übrigends scriptaculous, den großen Bruder von prototype)
Scriptaculous ist nicht der große Bruder, sondern der sehr feminin angehauchte Cousin von Protoype, der in der Großstadt Kunst macht, ein paar Musiker managt und bei jeder Party im Glitterkostüm anzutreffen ist. Da er sehr großzügig ist und viele an seinem Erfolg teilhaben läßt, ist er aber allenthalben sehr beliebt.
Mit Zitat antworten
  #7 (permalink)  
Alt 20-06-2008, 18:28
martin2
 Registrierter Benutzer
Links : Onlinestatus : martin2 ist offline
Registriert seit: May 2005
Ort: Duisburg
Beiträge: 79
martin2 ist zur Zeit noch ein unbeschriebenes Blatt
martin2 eine Nachricht über Skype™ schicken
Standard

PHP-Code:
var InputWatcher=Class.create();
InputWatcher.prototype = {
   
initialize: function(field)
   {
     
this.field=$(field);
     
this.field.onkeyup=this.getNum.bindAsEventListener(this); 
          
   },
   
getNum:function(evt)
   {
      var 
taste=evt.keyCode;
      if(
taste!=13 && (taste<38 || taste>40))
      {
         new 
Ajax.Autocompleter(
                  
'hersteller',
                  
'box_febi',
                  
'/ajax/autocompleter/'
                  {
                     
paramName'text',
                     
afterUpdateElement:getArtDetails
                  
}
        );
      }
   }
   
}

function 
getFebiArtDetails(wert)
{
   new 
Ajax.Updater('result_table','/ajax/getData/',{parameters: {text:wert.value}});
}
var 
watcher =  new InputWatcher('hersteller'); 
so sieht das jetzt aus!, trotzdem hab ich immer noch das Problen mit den Requestes...an welchen handler solltze man das ganze den binden?

nochmal alles durch gelesen, ich mache also beijedem keyup einen neuen Ajax.Autocomleter auf das sehe ich doch richtig oder?

Wie kann ich das verhindern? also praktisch eine Singelton implementieren?

Erledig... das bindAsEventListener(this); ist natürlich doppel gemoppelt bei autocompleter ;-)

PHP-Code:
window.onload=function(){   

         new 
Ajax.Autocompleter(
                  
'hersteller',
                  
'box',
                  
'/ajax/autocompleterfebi/'
                  {
                     
paramName'text',
                     
afterUpdateElement:getArtDetails,
                     
frequency:1.0                  }
        );
      }
     
function 
getArtDetails(wert)
{
   new 
Ajax.Updater('result_table','/ajax/getData/',{parameters:{text:wert.value}});

llöst das Problem welches bei richtigem lesen der doku garnicht aufgetreten wäre....
__________________
<?php echo "ad astra"; ?>
www.utopiafuture.de

Geändert von martin2 (20-06-2008 um 23:55 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 20-06-2008, 18:37
martin2
 Registrierter Benutzer
Links : Onlinestatus : martin2 ist offline
Registriert seit: May 2005
Ort: Duisburg
Beiträge: 79
martin2 ist zur Zeit noch ein unbeschriebenes Blatt
martin2 eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von pekka
Scriptaculous ist nicht der große Bruder, sondern der sehr feminin angehauchte Cousin von Protoype, der in der Großstadt Kunst macht, ein paar Musiker managt und bei jeder Party im Glitterkostüm anzutreffen ist. Da er sehr großzügig ist und viele an seinem Erfolg teilhaben läßt, ist er aber allenthalben sehr beliebt.
oder so :-) gute charakterisierung
__________________
<?php echo "ad astra"; ?>
www.utopiafuture.de
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:14 Uhr.