![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||||
| |||||
|
|
ich bekomme bei dieser Funktion manchmal einen Fehler: uncaught exception: [Exception... "Component returned failure code: 0x804b000f [nsIXMLHttpRequest.setRequestHeader]" nsresult: "0x804b000f (<unknown>)" location: "JS frame :: .... Über Google kam ich auch schon auf diverse Hinweise, dass der Fehler dann auftritt, wenn man versucht mehrere Requests abzuschicken, aber nur ein XMLHTTPREQUEST-Objekt dafür hat. |
|
Momentan erzeuge ich ein XMLHTTPREQUEST-Objekt z.B. dataText = new create_ajaxObj(); in der Klasse create_ajaxObj() sind dann die diversen Methoden, die man ^^^^^^ |
|
mit dataText.MethodenName() ansprechen kann. Und bei eben einer dieser Methoden tritt bei setRequestHeader der Fehler auf - allerdings ist es mir ein Rätsel, wie bzw. warum ich innerhalb der Klasse nun noch ein zweites XMLHTTPREQUEST-Objekt erzeugen soll? |
|
Und wenn ja, verliere ich dann nicht die Daten aus dem ersten Objekt? |
|
Wahrscheinlich habe ich es noch nicht so richtig verstanden? |
#3
| |||
| |||
|
|
Wahrscheinlich habe ich es noch nicht so richtig verstanden? Ja. Hast Du überhaupt meine Hinweise in news:4745DA54.3090309 (AT) PointedEars (DOT) de> berücksichtigt und den Quelltext entsprechend korrigiert? |
#4
| |||
| |||
|
|
Thomas 'PointedEars' Lahn wrote: Wahrscheinlich habe ich es noch nicht so richtig verstanden? Ja. Hast Du überhaupt meine Hinweise in news:4745DA54.3090309 (AT) PointedEars (DOT) de> berücksichtigt und den Quelltext entsprechend korrigiert? Ich habe die Erzeugung des Requests so korrigiert. Trotzdem brauche ich innerhalb noch das return obj; damit die Anwendung überhaupt läuft. |
|
Ich habe auch versucht, die Erzeugung des Requests in eine Funktion zu packen - aber wenn ich diese dann von außen aufrufe, dann scheint diese nicht mehr zu greifen. var dataText = new Object(); dataText.HTTPRequest(); das scheint allerdings nicht zu klappen. |
|
Auch in meinen anderen Funktionen hab ich das obj durch this ersetzt. Allerdings führt das zu noch mehr Fehlern. |
#5
| |||
| |||
|
|
Ich habe auch keine blosse Ersetzung vorgeschlagen. Wie wäre es, wenn Du Dich zur Abwechslung mal mit den *Grundlagen* beschäftigst, um die Lösung zunächst zu *verstehen* oder wenigstens *konkret* *fragst*, wenn Du etwas nicht verstehst? http://developer.mozilla.org/en/docs/JavaScript kopfschüttelnd, |
#6
| |||||||||||
| |||||||||||
|
|
Thomas 'PointedEars' Lahn wrote: Ich habe auch keine blosse Ersetzung vorgeschlagen. Wie wäre es, wenn Du Dich zur Abwechslung mal mit den *Grundlagen* beschäftigst, um die Lösung zunächst zu *verstehen* oder wenigstens *konkret* *fragst*, wenn Du etwas nicht verstehst? http://developer.mozilla.org/en/docs/JavaScript kopfschüttelnd, Wo unter anderem auch wieder diese verkürzte Variante steht? var httpRequest; if (window.XMLHttpRequest) { // Mozilla, Safari, ... httpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } |
|
Also frage ich weiter und versuche es nach und nach zu verstehen: momentan ist der Stand folgender: function ajaxObj() |
|
{ var ajaxObj = this; |
|
ajaxObj.createRequest = function() |
|
{ [...] this.ajaxObj = new XMLHttpRequest(); |
|
} [...] } ajaxObj.loadUserData = function(userID,file,thisName) { loadWait(thisName); this.open('POST', file, true); |
|
this.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); |
|
this.onreadystatechange = function() { this.handleResponseObj(thisName,''); } |
|
this.send('userID='+userID); |
|
} } In der HTML-Datei steht: var data = new ajaxObj(); data.createRequest(); createRequest habe ich in eine Funktion gepackt um auch innerhalb des Objektes noch einen neuen Request zu starten - ist es das, was Du meintest? |
pen() reicht, um|
Allerdings bekomme ich nun bei der Zeile this.open('POST', file, true); die Fehlermeldung "this.open is not a function" |
#7
| |||
| |||
|
|
Na lego, siehe oben. Schau Dir nochmal meinen Quelltext in Ruhe an und vergleiche mit Deinem. |
#8
| |||
| |||
|
|
loadUserData: function (userID,file,thisName) { var req = this.request; loadWait(thisName); req.open('POST', file, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.onreadystatechange = function() { this.handleResponseObj(req,thisName,''); } req.send('userID='+userID); }, handleResponseObj: function(req,thisName) { var req = this.request; if(req.readyState == 4) { document.getElementById(thisName).innerHTML = req.responseText; } } } Prinzipiell scheint es jetzt zu funktionieren, bis auf den Aufruf der Funktion handleResponseObj() in loadUserData ... da bekomme ich allerdings auch keine Fehlermeldung. |
#9
| |||
| |||
|
|
Günter Baier wrote: loadUserData: function (userID,file,thisName) { var req = this.request; loadWait(thisName); req.open('POST', file, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.onreadystatechange = function() { this.handleResponseObj(req,thisName,''); } req.send('userID='+userID); }, handleResponseObj: function(req,thisName) { var req = this.request; if(req.readyState == 4) { document.getElementById(thisName).innerHTML = req.responseText; } } [...] Prinzipiell scheint es jetzt zu funktionieren, bis auf den Aufruf der Funktion handleResponseObj() in loadUserData ... da bekomme ich allerdings auch keine Fehlermeldung. Ah, doch ... this.handleResponseObj is not a function ?????? Wieso das - ist doch auch so eingebunden, wie loadUserData? |
#10
| |||
| |||
|
|
Während im MSXML-DOM `this' innerhalb des onreadystatechange-Listeners auf das XHR-Objekt verweist, verweist es im Gecko-DOM auf den Listener. In jedem Fall kann es deshalb so nicht funktionieren. Mit der Closure var me = this; req.onreadystatechange = function() { me.handleResponseObj(req,thisName,''); } geht es. Sorry, mein Fehler. |
![]() |
| Thread Tools | |
| Display Modes | |
| |