AJAX (Asynchronous JavaScripting and XML) Forum
   Forum über „Asynchronous JavaScripting and XML“ und Web 2.0    AJAX Forum AJAX Blog AJAX Wiki AJAX Bücher

Zurück   AJAX (Asynchronous JavaScripting and XML) Forum > Für Entwickler > JavaScript


Digitalkamera
Antwort
 
LinkBack Themen-Optionen
Alt 12.01.2010, 18:28   #1 (permalink)
Neuer Benutzer
 
Registriert seit: 12.01.2010
Beiträge: 16
Standard IE Request klappt nicht (IE8, und Objekt für Ie 5 /6 erzeugt)

Hi Leute,
Ich hab vor kurzem erst angefangen mit AJAX und möchte es vor allem für
simple Sachen verwenden, wie zB. mittels PHP/MYSQL einen Namen aus einer Liste zu löschen und die Liste zu aktualisieren ohne das die Seite ständig aktualisiert. Das hat auch auf Anhieb geklappt ich habe mir den Code aus einem Hello World Tutorial "geklaut", um beim Erzeugen des Objektes keinen Fehler zu machen. Den Rest hab ich selber gemacht und es hat auch nach einer halben Stunde alles geklappt zumindest unter Firefox. Dann hab ich es unter Chrome,Opera und Safari auch getestet und es hat funktioniert. Nur der Internet Explorer zeigt keine Reaktion auf meine Funktion. Hier ist mal der Code für meine Objekterzeugung:
Code:
	function req(action,uid) {
		// 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) {}
			}
		}
...
...
...
Kann mir jemand sagen was ich falsch gemacht habe?
Kann sein das es irgendein dummer Fehler ist aber dann find ich den wohl nicht

Danke für eure antworten

Edit: Die Umlaute werden auch nur im IE verkrüppelt dargestellt, obwohl ich im Metatag und in der PHP Funktion header() den Zeichensatz auf iso-8 gesetzt habe.

Geändert von chuck (12.01.2010 um 18:36 Uhr) Grund: nachtrag
chuck ist offline   Mit Zitat antworten
Alt 13.01.2010, 09:08   #2 (permalink)
Erfahrener Benutzer
 
Benutzerbild von mikdoe
 
Registriert seit: 18.01.2009
Beiträge: 783
Standard

Sehe jetzt nicht auf Anhieb den Fehler, hier ist mal ein funktionierendes Beispiel. Evtl. klappt das mit dem IE älter als 6 nicht, dann halt das noch ergänzen.

Code:
function getXmlObject() {
 var http_request;
 if (window.XMLHttpRequest) {
  http_request = new XMLHttpRequest();
 }
 else
  if (window.ActiveXObject) {
   http_request = new ActiveXObject("Microsoft.XMLHTTP");
  }
 return http_request;
}
P.S.: Vielleicht musst Du bei Dir nur die IE-Weiche rumdrehen, dass erst das neuere versucht wird.
__________________
ich liebe JS und Ajax wenn es crossbrowsertauglich ist
mikdoe ist offline   Mit Zitat antworten
Alt 13.01.2010, 09:21   #3 (permalink)
Moderator
 
Benutzerbild von narkaT
 
Registriert seit: 26.06.2007
Beiträge: 2.121
Standard

Und das Problem liegt definitiv am XHR-Objekt?
Probier mal mit Alerts aus wo der IE aussteigt.

MfG
Jan
__________________
narkaT ist offline   Mit Zitat antworten
Alt 13.01.2010, 13:40   #4 (permalink)
Neuer Benutzer
 
Registriert seit: 12.01.2010
Beiträge: 16
Standard

Danke für den sinvollen Tipp, habe das ausprobiert und die Alerts eingefügt:
Code:
	function req(aktion,uid) {
	alert('funktion ausgeführt')
		// Request erzeugen
		if (window.XMLHttpRequest) {
	alert('will normales request objekt erzeugen')
			request = new XMLHttpRequest(); // Mozilla, Safari, Opera
		} else if (window.ActiveXObject) {
			alert('versucht für IE versionen objekte zu erstellen')
			try {
			alert('versucht für IE versionen objekte zu erstellen ie5')
    		request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
			} catch (e) {
				try {
					alert('versucht für IE versionen objekte zu erstellen ie6')
					request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
				} catch (e) {}
			}
		}
Hab es im IE (8!!!) ausprobiert, ich erhalte genau dieselben alerts wie im Firefox/Chrome etc. nur mit einem kleinen Unterschied: sonst passiert nix..
Ich erhalte die alerts: "Funktion ausgeführt" und "Will normales Requestobjekt erzeugen" ... sonst hab ich auch fehlerrückgaben der funktion folgendermaßen abgefragt :
Code:
     	function interpretRequest(d) {
		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 test	= request.responseText;
					// Name aus dem XML-Dokument herauslesen
				if(!d){
				document.getElementById('bearbeiten').innerHTML=test
        }
        else{
        	document.getElementById('anlegen').innerHTML=test
  }
				}
				break;
			default:
				break;
		}
alert('halllo' + test )
	}
Hab das im IE ausgeführt und erhalte nur hallo.... das heist die InterpretRequest-Funktion wird ausgeführt aber sonst auch nichts..
chuck ist offline   Mit Zitat antworten
Alt 13.01.2010, 14:40   #5 (permalink)
Erfahrener Benutzer
 
Benutzerbild von mikdoe
 
Registriert seit: 18.01.2009
Beiträge: 783
Standard

Bau auch mal in den Zweig if(!d){} und seine else Gabel ein alert ein.

Wenn das auch kommt, liegt es daran, dass der IE die ID's "bearbeiten" und "anlegen" nicht findet.
Kommen diese Konstanten mehrfach oder zusätzlich noch in name="" Tags vor? Das mag der IE nämlich garnicht.
__________________
ich liebe JS und Ajax wenn es crossbrowsertauglich ist
mikdoe ist offline   Mit Zitat antworten
Alt 13.01.2010, 15:26   #6 (permalink)
Neuer Benutzer
 
Registriert seit: 12.01.2010
Beiträge: 16
Standard

Danke für den Tipp =)
Endlich ein Unterschied:
Hab den Code so abgeändert:
Code:
		// Name aus dem XML-Dokument herauslesen
				if(!d){
				document.getElementById('bearbeiten').innerHTML=test
        alert('d existiert nicht')
        }
        else{
        	document.getElementById('anlegen').innerHTML=test
  }
Das Ergebniss:
der Chrome sagt: Funktion aufgerufen , Normales Request Objekt erzeugen (wie vorher) und "d existiert nicht" , da ich d nicht übergeben habe
Der IE8 sagt nur dasselbe wie vorher ohne "d existiert nicht"

Hab überprüft, ob die ids doppelt bzw gleich mit namen sind, bin aber nicht fündig geworden...
chuck ist offline   Mit Zitat antworten
Alt 13.01.2010, 15:31   #7 (permalink)
Neuer Benutzer
 
Registriert seit: 16.07.2009
Beiträge: 28
Standard

Mach mal aus
Code:
if(!d)
diese:
Code:
if(typeof d == "undefined")
deR_Ed ist offline   Mit Zitat antworten
Alt 13.01.2010, 15:32   #8 (permalink)
Moderator
 
Benutzerbild von narkaT
 
Registriert seit: 26.06.2007
Beiträge: 2.121
Standard

Lass dir doch mal da wo im Code "alert('halllo' + test )" steht
zusätzliche alle anderen wichtigen Werte ausgeben.
readyStat status etc...

MfG
Jan
__________________
narkaT ist offline   Mit Zitat antworten
Alt 13.01.2010, 15:36   #9 (permalink)
Erfahrener Benutzer
 
Benutzerbild von mikdoe
 
Registriert seit: 18.01.2009
Beiträge: 783
Standard

Du verwendest nur selten ein Semikolon, um ein Zeilenende zu markieren.
Nicht, dass hier einfach Syntax Fehler zu dem Fehlverhalten führen?
__________________
ich liebe JS und Ajax wenn es crossbrowsertauglich ist
mikdoe ist offline   Mit Zitat antworten
Alt 13.01.2010, 16:50   #10 (permalink)
Neuer Benutzer
 
Registriert seit: 12.01.2010
Beiträge: 16
Standard

Hab mir die states ausgeben lassen und das mit Typeoff=="undefined" ersetzt...
Ergebnis: Keine änderungen IE meint die Variable d wär da , der Rest nicht.
Des weiteren: Die Status Meldungen sind 4 und 200 also richtig oder?
chuck ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
internet, internet explorer, object, request


Themen-Optionen

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 an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mootools - Toggle klappt nicht Meistercoach JavaScript 4 22.08.2008 14:52
xmlresponse klappt nicht Narph Serverseitige Skriptsprachen 7 19.04.2008 14:39
Fokus auf Element nach AJAX-Request klappt, wird dann aber überschrieben X-Color JavaScript 2 16.01.2008 11:48
es klappt einfach nicht onkeltobi JavaScript 4 22.02.2007 12:14
Übergabe klappt nicht cgdesign Sonstige Probleme 0 23.03.2006 17:01


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.