zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Auf Function warten

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 26.03.2015, 20:07
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.03.2015
Beiträge: 5
fischlein befindet sich auf einem aufstrebenden Ast
Standard Auf Function warten

Hallo!

Ich weis das diesbezüglich schon einiges im Netzt gibt nur verstehe ich nicht wie man das zum laufen bringt.

Ich habe nach diesen Beispiel ein Upload gebastelt das mir eine ZIP eine TXT und eine JPG hochläd.
Das Funktioniert soweit auch nur möchte ich nach den Upload ein weiteres Formular per JavaScript senden, doch diese Funktion soll nun warten bis die drei Dateien hochgeladen wurden.

Da ist mein Problem!

Code:
var client = null;

function uploadFile(bezFile,fortSchr,bezDatei,prozBez){
    //Wieder unser File Objekt                
    var file = document.getElementById(bezFile).files[0];

    //FormData Objekt erzeugen
    var formData = new FormData();

    //XMLHttpRequest Objekt erzeugen
    client = new XMLHttpRequest();

    var prog = document.getElementById(fortSchr);
    
    if(!file)
        return;

    //Fügt dem formData Objekt unser File Objekt hinzu
    formData.append(bezDatei, file);

    client.onerror = function(e) {
        alert("onError");
    };

    client.onload = function(e) {
        document.getElementById(prozBez).innerHTML = "Fertig";
    };

    client.upload.onprogress = function(e) {
        var p = Math.round(100 / e.total * e.loaded);
            document.getElementById(fortSchr).style.width = p + "%";            
            document.getElementById(prozBez).innerHTML = document.getElementById(bezFile).value + " " + p + "%";
    };

    client.open("POST", "upload.php");


    client.onreadystatechange = function() {
        if(this.readyState == this.DONE && this.status == 200){
            var ausgabe = document.getElementById("testAusgabeA");
            ausgabe.innerHTML = this.responseText;
        }
    };

    client.send(formData);
}

function losJetzt(){
    uploadFile("fileA","FortschrittZip","dateiA","ProzentZip");
    uploadFile("fileB","FortschrittTxt","dateiB","ProzentTxt");
    uploadFile("fileC","FortschrittJpg","dateiC","ProzentJpg");

window.setTimeout(weiterJetzt, 1000);
}

function weiterJetzt(){
    document.forms['LevelForm'].submit();
}
Das mit den Timeout war ein Test und kann nicht so bleiben, da müßte dann so was rein wie:
Code:
if(uploadFile.done){
    weiterJetzt();
}
und genau das ist mein Problem.
Wie macht man das richtig?
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 27.03.2015, 08:54
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von fischlein Beitrag anzeigen

Code:
    client.onreadystatechange = function() {
        if(this.readyState == this.DONE && this.status == 200){
            var ausgabe = document.getElementById("testAusgabeA");
            ausgabe.innerHTML = this.responseText;
        }
    };
Ist das nicht genau der Teil den du brauchst? Also hier einfach die Funktion aufrufen?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 27.03.2015, 18:45
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.03.2015
Beiträge: 5
fischlein befindet sich auf einem aufstrebenden Ast
Standard

Sobald eines der drei fertig ist würde es dann weiter gehen und das soll ja nicht sein.
Erst wenn alle fertig sind

Geändert von fischlein (27.03.2015 um 19:27 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 27.03.2015, 20:22
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 07.03.2015
Beiträge: 5
fischlein befindet sich auf einem aufstrebenden Ast
Standard

Denke das ich es jetzt hinbekommen habe

Code:
var client = null;
var wieoft = 0;
var checkablauf = 0;

function uploadFile(bezFile,fortSchr,bezDatei,prozBez){
	//Wieder unser File Objekt                
	var file = document.getElementById(bezFile).files[0];

	//FormData Objekt erzeugen
	var formData = new FormData();

	//XMLHttpRequest Objekt erzeugen
	client = new XMLHttpRequest();

	var prog = document.getElementById(fortSchr);
	
	if(!file)
		return;

	//Fügt dem formData Objekt unser File Objekt hinzu
	formData.append(bezDatei, file);

	client.onerror = function(e) {
		alert("onError");
	};

	client.onload = function(e) {
		document.getElementById(prozBez).innerHTML = "Fertig";
	};

	client.upload.onprogress = function(e) {
		var p = Math.round(100 / e.total * e.loaded);
			document.getElementById(fortSchr).style.width = p + "%";            
			document.getElementById(prozBez).innerHTML = document.getElementById(bezFile).value + " " + p + "%";
	};

	client.open("POST", "upload.php");

	client.onreadystatechange = function() {
		if(this.readyState == this.DONE && this.status == 200){
			var ausgabe = document.getElementById("testAusgabeA");
			ausgabe.innerHTML = this.responseText;
			wieoft++;
			if(wieoft == checkablauf){
				weiterJetzt();			
			}
		}
	};

	client.send(formData);
	client = null;
}

function losJetzt(){
	if(document.getElementById('fileA').value != ''){
		uploadFile("fileA","FortschrittZip","dateiA","ProzentZip");
		checkablauf++;
	}
	if(document.getElementById('fileB').value != ''){
		uploadFile("fileB","FortschrittTxt","dateiB","ProzentTxt");
		checkablauf++;
	}
	if(document.getElementById('fileC').value != ''){
		uploadFile("fileC","FortschrittJpg","dateiC","ProzentJpg");
		checkablauf++;
	}
	
}

function weiterJetzt(){
	document.forms['LevelForm'].submit();
}
Sollte doch so passen oder kann man da noch was dran verbessern?
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JavaScript und mobile Weiterleitung sven.le Javascript & Ajax 7 08.07.2013 15:59
Slider Nav crixon Javascript & Ajax 0 30.01.2012 14:33
Grafiken je nach Zustand Visu CSS 14 07.10.2009 20:28
Function in Function Bosko Serveradministration und serverseitige Scripte 9 07.11.2008 19:24
Javascript für alle Browser darstellen lassen? Pinking Javascript & Ajax 10 08.10.2008 09:32


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:12 Uhr.