Keth: Ajax upload Script -> Funktionsaufruf nach Erledigung

Hallo liebe HTML-Javascript-&co Gemeinde,

ich habe ein Upload-Script und möchte nun eine Funktion nach Erledigung des Uploads ausführen - leider macht es dies aber nicht.

Konkret möchte ich dateibrowser_unterverzeichnis_oeffnen('datastorage/','','',''); }); ausführen lassen. Andere Aufgaben wie $("#loading").fadeOut({duration: 50 }); erledigt Javascript an selbiger Stelle im Codeteil ohne murren. Daher meine Frage - was mache ich falsch?

Danke für eure Tips!


			window.addEventListener('load', function() {
				var upload   = document.getElementById('dateibrowser_file_upload'),
				filename = document.getElementById('dateibrowser_file_upload_name'),
				progress = document.getElementById('dateibrowser_file_upload_progress');
				upload.addEventListener('change', function(evt) {
					document.getElementById('dateibrowser_file_upload_progress').style.display="block";
					document.getElementById('loading').style.display="block";
					var request = new XMLHttpRequest(),
					file = this.files[0];
					dateibrowser_file_upload_name = filename.value;
					request.open('POST', 'ajax_dateibrowser.php', true);
					request.upload.addEventListener('progress', function(evt) {
						progress.value = Number((100 / evt.total) * evt.loaded).toFixed(2) + ' %';
					}, false);
				request.addEventListener('load', function(evt) {
						$(function() {
						dateibrowser_unterverzeichnis_oeffnen('datastorage/','','','');
						});
						document.getElementById('dateibrowser_file_upload_progress').style.display="none";
						$("#loading").fadeOut({duration: 50 });
						//alert('Upload erfolgreich.');
					}, false);
					var data = new FormData();
					data.append('file', file);
					data.append('dateibrowser_file_upload_name',dateibrowser_file_upload_name);
					// Datei hochladen
					request.send(data);
				}, false);
			}, false);
			
			function dateibrowser_file_upload_button() {
				$("#dateibrowser_file_upload").trigger('click');
			}

  1. Tach!

    request.addEventListener('load', function(evt) {
    	$(function() {
    		dateibrowser_unterverzeichnis_oeffnen('datastorage/','','','');
    	});
    }, false);
    

    Wenn das jQuery-Code ist, dann registriert das Konstrukt $(function() {...}); einen Event-Handler für das DOM-Ready-Event. Soll das so sein?

    dedlfix.

    1. Hi!

      ... Soll das so sein?

      Das habe ich so übernommen aus einem vorgebastelten Uploadscript. Ich habe dazu lediglich dateibrowser_unterverzeichnis_oeffnen('datastorage/','','',''); und $("#loading").fadeOut({duration: 50 }); hinzugefügt. Try & Error Variante :) Der zweite Teil funktioniert auch. Daher hat mich gewundert warum Teil 1 nicht will...!?!

      1. Tach!

        ... Soll das so sein?

        Das habe ich so übernommen aus einem vorgebastelten Uploadscript. Ich habe dazu lediglich dateibrowser_unterverzeichnis_oeffnen('datastorage/','','',''); und $("#loading").fadeOut({duration: 50 }); hinzugefügt. Try & Error Variante :) Der zweite Teil funktioniert auch. Daher hat mich gewundert warum Teil 1 nicht will...!?!

        Na, weil der nur zum DOM-Ready-Event ausgeführt wird. Das gibts nur einmal, kurz nach dem Laden der Seite und dann nie wieder. Wenn du den Handler dazu erst irgendwann später hinzufügst, wird der gar nicht mehr aufgerufen. Das $(funktion() { nebst Abschluss }); muss dort weg.

        dedlfix.