[JavaScript] Prototype: onComplete (Form.Request)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Flyde, 8. März 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 8. März 2010
    Prototype: onComplete (Form.Request)

    Hi,

    ich hab ein Problem mit onComplete...
    Es geht um eine Kundenverwaltung, hier mal zum Ablauf:

    - Man hat eine Tabelle in der alle Kunden aufgelistet werden
    - Man hat ein Formular in der man einen Kunden editieren kann

    1. Man editiert z.B. den Firmennamen
    2. Man drückt auf Save und es soll in der Tabelle aktualisiert auftauchen (Mustermann wird zu Mustermann Test)

    Sowohl das ändern als auch das aktualisieren funktioniert, nur nicht mit onComplete...

    Hier der Code
    PHP:
        this . save  = function( formId tblScript )
        {
            var 
    sec  confirm ( AenderungSpeichern );
            
            if(
    sec
            {
              $(
    formId ). request (
              {
                  
    onComplete : function() { 
                    
    alert ( "DIESER ALERT FUNKTIONIERT" );
                    
    this . renderTbl ( tblScript 'tbl' null 'leftBottom_label' 'Kunden' ); 
                    $(
    formId ). disable ();    
                }
              });    
                
            }       
        } 
    Wie im alert beschrieben, das alert selbst funktioniert... die anderen beiden funktionen nicht.


    Variante 2:
    PHP:
        this . save  = function( formId tblScript )
        {
            var 
    sec  confirm ( AenderungSpeichern );
            
            if(
    sec
            {
              $(
    formId ). request (
              {
                  
    onComplete : function() { 
      
                }
              });    

                     
    this . renderTbl ( tblScript 'tbl' null 'leftBottom_label' 'Kunden' ); 
                     $(
    formId ). disable ();   
            }       
        } 
    Das funktioniert... ist aber fehlerbehaftet.
    Es kann passieren, dass der request noch garnicht abgeschlossen ist und die Tabelle schon aktualisiert wird, was den effekt hätte, dass alte informationen ausgegeben werden.

    Beispiel durch Firebug erzeugt:
    kunden_edit.php?id=5 - 5.5ms
    kunden_table.php - 5.0ms



    Irgendeine logische erklärung für das onComplete phänomen?
     
  2. 8. März 2010
    AW: Prototype: onComplete (Form.Request)

    onComplete: function() {} <- "this" bezieht sich auf die funktion, nicht auf deine klasse.
    daher:
    Code:
    this.save = function(formId, tblScript)
     {
     var sec = confirm(AenderungSpeichern);
     
     if(sec) 
     {
     $(formId).request(
     {
     onComplete: function() { 
     alert("DIESER ALERT FUNKTIONIERT");
     this.renderTbl(tblScript, 'tbl', null, 'leftBottom_label', 'Kunden'); 
     $(formId).disable(); 
     }.bind(this) // <- funktion an klasse binden
     }); 
     
     } 
     } 
     
  3. 8. März 2010
    AW: Prototype: onComplete (Form.Request)

    Poah .. und ich grübel und grübel.. was weißt du eigentlich nicht
    Ich danke dir zum gefühlten hundertsten mal
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.