TP Underground Lounge 07/08
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 10.04.2008, 12:31   #1
TP-Senior
 
Registriert seit: Oct 2005
tobias82 macht alles soweit korrekt

JavaScript/Ajax Funktion wird nur bedingt ausgeführt


Hallo Leute,

bastle grade meine ersten kleinen AJAX-Spielereien und bin auf ein Problem gestossen, an dem ich mir den Kopf zerbreche.

Nachfolgend die setRequest-Funktion, welche durch onChange innerhalb eines Formulars aufgerufen wird (funktioniert!):

Code:
// Request senden
function setRequest(urlParam, elemId, target) {
	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		var url = urlParam;
		var id = document.getElementById(elemId).id;
		var value = document.getElementById(elemId).value;
		// Request öffnen
		request.open('post', url, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');		
		// Request senden
		request.send('sent=' + value);
		// Request auswerten
		request.onreadystatechange = interpretRequest(elemId);	
	}
}
Und nun die Stelle an der es harkt: Nur wenn ich den 1. alert (alert('0') drin lasse, wird auch der Rest der Funktion ausgeführt. Nehme ich den alert raus, passiert gar nichts.

Code:
// Request auswerten
function interpretRequest(elemId) {
	//var element = elemId;
	alert('0');
	switch (request.readyState) {
		// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
		case 4:
			if (request.status != 200) {
				alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
			} else {
				var content = request.responseText;
				// den Inhalt des Requests in das <div> schreiben
				if(elemId == 'selectdocseminars'){
					alert('1');		
					document.getElementById('selectfolders').innerHTML = content;
					document.getElementById('folders').style.visibility = "visible";	
				}
				else if(elemId == 'docterms'){
					alert('2');
					document.getElementById('selectdocseminars').innerHTML = content;
					document.getElementById('docseminars').style.visibility = "visible";
					document.getElementById('folders').style.visibility = "hidden";
				}
				else if(elemId == 'folderterms'){
					alert('3');
					document.getElementById('selectfolderseminars').innerHTML = content;
					document.getElementById('folderseminars').style.visibility = "visible";
				}				
			}
			break;
		default:
			break;
	}
}
vielen Dank für eure Hilfe!
tobias82 ist offline   Mit Zitat antworten


Alt 11.04.2008, 12:34   #2
TP-Moderator
 
Benutzerbild von Malleus
 
Registriert seit: Aug 2004
Ort: Homburg / Saarland
Malleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKEMalleus ist ein richtiges Arbeitstier - DANKE
Hi,
ich hab' mir jetzt nicht das ganze Script angeschaut, aber eine Zeile kommt mir "seltsam" vor:

PHP-Code:
request.onreadystatechange interpretRequest(elemId); 
Normalerweise steht hier der Name eine Funktion und nicht deren Ergebnis.

interpretRequest(elemId) ruft nämlich die Funktion auf und weist dann deren Ergebnis dem request.onreadystatechange zu.

versuch' mal folgendes:

PHP-Code:
request.onreadystatechange interpretRequest 
Achtung: Der Parameter elemId wird nicht übergeben. Da mußt Du Dir wahrscheinlich etwas anderes ausdenken.

bzw.

PHP-Code:
request.onreadystatechange = function() { interpretRequest(elemId) }; 
Vieleicht bringt Dich das auf die richtige "Fährte".

tschau

Frank
Malleus ist offline   Mit Zitat antworten
Alt 14.04.2008, 10:40   #3
TP-Senior
 
Registriert seit: Oct 2005
tobias82 macht alles soweit korrekt
Vielen Dank! Musste noch zusätzlich die Funktion "interpretRequest()" in die andere "hineinverschachteln", um den Zugriff auf die nicht-globalen Variablen zu gewährleisten und dann hats gefunzt!
tobias82 ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > HTML Puristen > Javascript
JavaScript/Ajax Funktion wird nur bedingt ausgeführt JavaScript/Ajax Funktion wird nur bedingt ausgeführt
« Inhalt einsliden | Layer-"PopUp" mit Cookie? Wie kann ich altes PopUp Script anpassen? »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:49 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67