|
|
|||||||
| Registrieren | Hilfe | Benutzerliste | Interessengemeinschaften | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
|
|
LinkBack | Themen-Optionen |
|
|
#1 (permalink) |
|
Neuer Benutzer
Registriert seit: 12.01.2010
Beiträge: 16
|
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 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 |
|
|
|
|
|
#2 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 18.01.2009
Beiträge: 783
|
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;
}
__________________
ich liebe JS und Ajax wenn es crossbrowsertauglich ist |
|
|
|
|
|
#4 (permalink) |
|
Neuer Benutzer
Registriert seit: 12.01.2010
Beiträge: 16
|
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) {}
}
}
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 )
}
|
|
|
|
|
|
#5 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 18.01.2009
Beiträge: 783
|
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 |
|
|
|
|
|
#6 (permalink) |
|
Neuer Benutzer
Registriert seit: 12.01.2010
Beiträge: 16
|
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
}
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...
|
|
|
|
|
|
#9 (permalink) |
|
Erfahrener Benutzer
Registriert seit: 18.01.2009
Beiträge: 783
|
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 |
|
|
|
|
|
#10 (permalink) |
|
Neuer Benutzer
Registriert seit: 12.01.2010
Beiträge: 16
|
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? |
|
|
|
![]() |
| Lesezeichen |
| Stichworte |
| internet, internet explorer, object, request |
| Themen-Optionen | |
|
|
Ä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 |