jQuery post.done - Widgeterstellung aufruf anderer Funktion nicht möglich

crsakawolf

Erfahrenes Mitglied
Hallo Leute,

ich habe eine allgemeine Frage.

Und zwar will ich gerade ein Widget programmieren.

In diesem Widget wird per .post eine Abfrage an eine PHP Datei erstellt.
Diese liefert einen String welcher dann in eine Div ausgegeben wird.

Möchte ich nun innerhalb der .done function in meinem Widget eine andere Funktion aufrufen, dann sagt er, das diese nicht exisitert.
Rufe ich jedoch ausserhalb der .done function diese ander Funktion auf, dann ist der Div in dem ich das .post ausgebe leer.

Wie kann ich diesen "Fehler" beheben?

Code:
(function($){
	$.widget("ui.name",{
		// Options Standard value
		options: {
			path:'./'
		},
		
		_setOption: function(option, value){			// übergibt Parameter an Options
			 var self = this,
		        o = self. options;
        },
        
		_init: function(){								// Initialisierung
			var self = this;
			opt = this.options;							// Übergabe options auf Variable
			ele = this.element;							// Übergabe element auf Variable			
			this.getPath(opt.path);
		},
		
		getPath: function(path){
			var files = $.post("datei.php", { path : path } );	// Abfrage des Aktuellen Ordners

			/* Ausgabe der PHP ausgeben */
			files.done(function(data){
				this.andereFunktion();
			});		
		},
                
                andereFunktion: function(){
                      /* Hier steht was.. */
                },
		
		destroy: function(){							// Destructor
			$.Widget.prototype.destroy.apply(this);
		}		
	});
})(jQuery);

Wenn ich bevor ich die andereFunktion extern (also nach dem .done) aufrufe, wird der DIV nur als gefüllt gezeigt, wenn ich vorerst ein alert ausgebe.

Lg und Danke
 
Ich habe den "Fehler" selber behoben.

Falls es jmd interessiert.

bevor .done eröffnet wird den this zeiger auf eine variable.

also

Code:
getPath: function(path){
            var files = $.post("datei.php", { path : path } );  // Abfrage des Aktuellen Ordners
            var wdg = this;
            /* Ausgabe der PHP ausgeben */
            files.done(function(data){
               wdg.andereFunktion();
            });     
        },
 
Jetzt habe ich doch ein Problem.
Ich rufe die Funktion 'getPath' in der Funktion 'andereFunktion' Rekursiv auf.
In der Funktion 'andereFunktion' erstelle ich clickEvents.

Durch die Rekursion wirkt sich das leider extremst auf die Ladezeit aus.

Hat einer eine Idee wie ich das umgehen kann?

Geht um einen Dateibrowser, heist, das ich beim Click event einen unterordner aufrufe usw.
 

Neue Beiträge

Zurück