Ich habe an einem Windows-Gadget (dh der "Browser" ist Internet Explorer), die angegebene Subnetzadressen für Informationen abfragt. Jetzt macht es das manchmal in einem relativ schnellen Tempo (etwa alle 5 Sekunden) und es funktioniert gut genug. Manchmal bleibt es jedoch im Bereitschaftszustand 1 stecken und bleibt für immer dort. Immer wenn das Gadget versucht, die Funktion zum Abrufen der xmlhttprequest erneut auszuführen und Informationen von ihr zu erhalten, bleibt es bei Zustand 1. Dies ist leicht replizierbar, wenn mehrere Instanzen des Gadgets geöffnet und dann alle bis auf eine von ihnen geschlossen werden. Zu diesem Zeitpunkt wird der, der noch offen ist, fast immer in diesem Zustand stecken bleiben. Ich habe das Gefühl, dass es etwas damit zu tun haben könnte, dass alle auf die gleiche Website zugreifen, oder es könnte nur damit zu tun haben, dass xmlhttprequests mitten in der Übertragung gestoppt wird und andere daran gehindert werden, zu arbeiten. Unten ist der relevante Code.Javascript: xmlhttprequest zufällig im Bereit Status 1
//Reference to this for the inner function
var me = this;
var request = new XMLHttpRequest();
request.onreadystatechange = onReadyStateChange;
var url = this.url;
//Make the URL random to prevent being cached
url += ("&a=" + ((new Date()).getTime()));
Trace(DEBUG_COMM, "Sase.updateStatus url: " + url);
request.open("GET", url, true);
request.send(); // fire off the request, calls httpRequestReadyStateChange as things continue
Trace(DEBUG_COMM, "Request sent" + request.readyState);
function onReadyStateChange() {Trace(DEBUG_COMM, "Sase.httpRequestReadyStateChange: state=" + request.readyState);
if (4 == request.readyState) {
Trace(DEBUG_COMM, "Sase.httpRequestReadyStateChange: status=" + request.status);
if (request.status == 200) {
Trace(DEBUG_COMM, "retrieved html: " + request.responseText);
var results = request.responseText;
var resultsString = request.responseText.toString();
Trace(DEBUG_COMM, "results String: " + resultsString);
me.ParseStatusData(resultsString);
}
else {
//me.commError(request.status);
}
request = null;
}
}
, wie fühlen Sie sich über die Änderungen veröffentlichen und diese eine würdige Antwort zu machen? –
Ziemlich unbehaglich, da ich seit fast 3 Jahren keinen Zugang mehr zu diesem Code hatte. – user535617