this // Ajax // IE fehler
Dimitri
- javascript
0 Felix Riesterer
0 Dimitri
0 molily
0 Dimitri
Hallo an alle,
es besteht wieder mal ein Problem mit dem IE im FF funktioniert alles super.
Und zwar habe ich eine Tabelle mit einzelnen Zellen die ein onclick Ereignis haben. dieses Ruft eine Javascriptfunktion auf welche eine PHP Datei anspricht und die Rückgabe dieser PHP Datei wieder in die Zelle reinschreiben soll. der FF macht das,IE7 nicht.
Das Ganze läuft mit dem Framework Prototype.
Die Funktion sieht wie folgt aus:
function z_change_acces(cell,uid,sid,right) {
var lastCellClicked = null;
lastCellClicked = cell;
new Ajax.Request(
"functions.php",
{
method: "post",
onComplete: function(xml_http) {
lastCellClicked.update(xml_http.responseText);
},
parameters: {
userid: uid,
sid: sid,
funktionid: right,
task: "change_access_right"
}
}
);
}
Der Aufruf aus der table
...<th onclick="z_change_standard_right(this,'29','afa','','');">...
Die PHP-Datei gibt nur ein IMG zurück was dort eingefügt wird. Dies Klappt im FF doch der IE sendet zwar alles ab, ändert aber nicht die Zelle.
Meine Vermutung:
Liegt es an dem "this" im Aufruf?
Der FF gibt das Object durch: [object HTML TableCellElement]
der IE das: [object]
Herausgefunden durch nen Alert.
Hat einer ne Idee? Wollte nicht jede Zelle mit ner ID versehen und das dann wieder auflösen ....
Lieber Dimitri,
Der FF gibt das Object durch: [object HTML TableCellElement]
der IE das: [object]
naja, der IE und seine "hilfreichen" Meldungen... Finde heraus, um was für ein Objekt es sich handelt. Dazu kannst Du eine for-in-Schleife benutzen. Ich mache das so, wenn ich keine Lust habe, bessere Debug-Ausgaben zu erzeugen:
function objektAusgabe (obj) {
for (var mem in obj)
alert(mem + ": " + obj[mem]);
}
Das kann zu sehr langen OK-Klicken-Orgien führen, aber auf die Schnelle erhalte ich so erste Ideen darüber, was sich im IE abspielt (dort hat man ja leider noch immer keine Firebug-ähnlichen Helfer). Wenn es mir zu blöd wird, halte ich einfach die Escape-Taste gedrückt.
Liebe Grüße,
Felix Riesterer.
Danke für die interessante Vorgehensweise, leider bekomm ich viel aussgegeben, was mir aber dennoch nicht richtig weiterhilft
function z_change_acces(cell,uid,sid,right) {
var lastCellClicked = null;
lastCellClicked = cell;
Wozu legst du diese Variable an? Du kannst cell auch direkt im onComplete-Handler benutzen (Stichwort Closure).
onComplete: function(xml\_http) { lastCellClicked.update(xml\_http.responseText);
Lass dir mal responseText ausgeben.
<th onclick="z_change_standard_right(this,'29','afa','','');">...
Die PHP-Datei gibt nur ein IMG zurück was dort eingefügt wird. Dies Klappt im FF doch der IE sendet zwar alles ab, ändert aber nicht die Zelle.
Prinzipiell sollte das funktionieren. Tut denn <th onclick="this.update('bla')"> etwas? Vermutlich nicht (es kommt ein JS-Fehler, den du sehen müsstest), weil Prototype im IE nicht alle Elementobjekte durch die update-Methode erweitern kann. Wenn du das Element mit $ wrappst, müsste es auch im IE die update-Methode haben: $(this).update()
http://www.prototypejs.org/api/utility/dollar
http://www.prototypejs.org/learn/extensions
Mathias
DANKE genau das wars:
Wenn du das Element mit $ wrappst, müsste es auch im IE die update-Methode haben: $(this).update()