Wieso wird das nicht gespeichert?

WACSF

Erfahrenes Mitglied
Hallo allerseits.

Ich habe ein Problem mit dem Speichern von Daten.

Code:
var plan = new Array();

function query(){
			connect();
			xmlhttp.open("GET", "http://adresse.php",true);
			xmlhttp.onreadystatechange=function() {
				if (xmlhttp.readyState==4) {
					var code = xmlhttp.responseText;	
					var preg = /\b([0-9]{2}.[0-9]{2}.[0-9]{2})\b/g;
					var test = code.match(preg);
					if (test){		
						for (var i=0; i<test.length; i++)
							arr.push(test[i]);					
					}
					
					var tempcode = code.split("Speiseplan n&auml;chste Woche");
					var preg2 = /<.*?>/gi;
					tempcode[1] = tempcode[1].split(/Montag, |Dienstag, |Mittwoch, |Donnerstag, |Freitag, |Gemischte/g);
					for(var i = 1; i < tempcode[1].length; i++){
						
						tempcode[1][i] = tempcode[1][i].replace(preg2,'');
						tempcode[1][i] = tempcode[1][i].replace(/^\s*/gi,'');
						tempcode[1][i] = tempcode[1][i].replace(/ +/gi,' ');
						tempcode[1][i] = tempcode[1][i].replace(/&nbsp;|&euro;|\f|\n|\r|\t|\v/gi,'');		
						tempcode[1][i] = tempcode[1][i].split(/\d,\d\d\s*\S\s*\d,\d\d/g);
						
						//document.write(tempcode[1][1].length)
						//for(var i = 0; i < tempcode[1][1].length; i++)
						var datum = tempcode[1][i][0].match(preg);
						
						for(var a = 0; a < tempcode[1][1].length; a++){
							tempcode[1][i][a] = tempcode[1][i][a].replace(preg,'');
							tempcode[1][i][a] = tempcode[1][i][a].replace(/^\s*/gi,'');
							plan.push(tempcode[1][i][a]);						
						} // Ende for
							document.write(plan.length+"<br>")
					} // Ende for
						// DAS HIER KANN ICH NICHT AUSGEBEN, BZW. KOMMT DA NICHTS. WIESO?
						document.write(plan[1])
						document.write(plan[2])
						document.write(plan[3])					
				} // Ende if			
			}	// Ende function		
			xmlhttp.send(null);
			
		}// Ende function

Das Problem ist, dass er mir die Daten nicht persistent im Array plan speichert - WIESO?
Setzt der da nur eine Referenz, die nach der FOR Schleife wieder weg ist?
Ich finde aber das Problem einfach nicht.

Schöne Grüße,
WACSF
 
Bist du sicher, dass der Array leer ist, oder wird nur nichts ausgegeben?

Ist dir bekannt, was write(), sofern es nach beendetem Ladevorgang eines Dokumentes darauf angewendet wird, bewirkt?
 
Hi,
ich habe mir jetzt mal das mit write durchgelesen. Nun habe ich kein document.write() mehr drin und die variablen alle in den global Bereich geschrieben. Wenn ich nun eine neue Funktion teste() erstelle, die plan.length in divtag.innerText ausgeben soll wird mit als Größe 0 angezeigt. Deswegen habe ich das Gefühl, dass die Daten mit plan.push(daten) nicht wirklich in dem array gespeichert werden?

Schöne Grüße,

WACSF
 
ja habe ich. ich habe sie mir aus dem array plan vor ende der for schleife ausgeben lassen. da stehen sie definitiv drin. sobald ich die ausgabe um eine for schleife nach außen setze, werden die daten nichtmehr angezeigt.
ich habe jetzt nochmal mein komplettes script mit den Kommentaren zur Ausgabe

Code:
var arr = new Array();
var xmlhttp = false;
var plan = new Array();
var code = "NA";
var date = new Array();
var date2 = new Array();
var preg = /\b([0-9]{2}.[0-9]{2}.[0-9]{2})\b/g;
var preg2 = /<.*?>/gi;
var tempcode = new Array();

		function connect(){
			if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
				try {
					xmlhttp = new XMLHttpRequest();
				} catch (e) {
					xmlhttp=false;
				}
			}
			if (!xmlhttp && window.createRequest) {
				try {
					xmlhttp = window.createRequest();
				} catch (e) {
					xmlhttp=false;
				}
			}		
		}
		function query(){
			connect();
			xmlhttp.open("GET", "http://adresse.php",true);
			xmlhttp.onreadystatechange=function() {
				if (xmlhttp.readyState==4) {
					code = xmlhttp.responseText;	
					date = code.match(preg);
					if (date){		
						for (var i=0; i<date.length; i++)
							arr.push(date[i]);					
					}
					tempcode = code.split("Speiseplan n&auml;chste Woche");
					
					tempcode[1] = tempcode[1].split(/Montag, |Dienstag, |Mittwoch, |Donnerstag, |Freitag, |Gemischte/g);
					for(var i = 1; i < tempcode[1].length; i++){
						
						tempcode[1][i] = tempcode[1][i].replace(preg2,'');
						tempcode[1][i] = tempcode[1][i].replace(/^\s*/gi,'');
						tempcode[1][i] = tempcode[1][i].replace(/ +/gi,' ');
						tempcode[1][i] = tempcode[1][i].replace(/&nbsp;|&euro;|\f|\n|\r|\t|\v/gi,'');		
						tempcode[1][i] = tempcode[1][i].split(/\d,\d\d\s*\S\s*\d,\d\d/g);
						
						//document.write(tempcode[1][1].length)
						//for(var i = 0; i < tempcode[1][1].length; i++)
						date2 = tempcode[1][i][0].match(preg);
						
						for(var a = 0; a < tempcode[1][1].length; a++){
							tempcode[1][i][a] = tempcode[1][i][a].replace(preg,'');
							tempcode[1][i][a] = tempcode[1][i][a].replace(/^\s*/gi,'');
							//document.write(tempcode[1][i][a]+"<br>");
							var check = plan.push(tempcode[1][i][a]);						
							
							//if (check)
								//document.write("GEPUSHED");
							//else
								//document.write("NICHT GEPUSHED");
						} // Ende for
					// WIRD NICHT ANGEZEIGT
					//	for(var t = 0; t < plan.length; t++){
					//		document.write("ARRAY: "+plan[t]+"<br>");
					//	}					
					} // Ende for
					
					// WIRD NICHT ANGEZEIGT
						for(var t = 0; t < plan.length; t++){
							document.write("ARRAY: "+plan[t]+"<br>");
						}
						// DAS HIER KANN ICH NICHT AUSGEBEN, BZW. KOMMT DA NICHTS. WIESO?
				
				} // Ende if			
			teste();
			}	// Ende function		
			xmlhttp.send(null);
			
		}// Ende function
function teste(){
	error.innerText = plan.length;	
}

        function setContentText()
        {
			if(arr.length == 0) 
				error.innerText = "Der Plan enthält leider keine Daten.";
			if(xmlhttp == false)
				error.innerText = "Keine Internetverbindung vorhanden.";
			if(arr.length > 0 && xmlhttp){
				woche.innerText = arr[0]+"-"+arr[1];
				essen.innerText = arr[2]+"<br>"+arr[3]+"<br>"+arr[4]+"<br>"+arr[5]+"<br>"+arr[6];
			}
        }
 
Ich glaube, es bringt mehr, wenn du mal einen Beispiel- Inhalt der abgefragten Datei postest und beschreibst, was du daraus erzeugen willst.

Ohne dieses wird es schwer, das Bsp. nachzuvollziehen, zumal es so, wie es momentan ist, eh nur im IE7 komplett funktionieren kann, da nur dieser XMLHttpRequest() und innerText kennt.
 

Neue Beiträge

Zurück