But the channel is only "dead" if the xmlhtprequest wasn't processed
properly. And that should never happen. If the xmlhttprequest is in
pol with readyState == 4, then new xmlhttprequest should be created.

Can you demonstrate the behavior you're describing on a quick start project?

-Matej

On 3/15/07, Martin Funk <[EMAIL PROTECTED]> wrote:
Hi,

as I see it

Wicket.Ajax.getTransport

sometimes returns XMLHttpRequest objects that are in "readyState == 4"
so they still might be processed by the "stateChangeCallback".

Once "stateChangeCallback" reaches  "t.onreadystatechange =
Wicket.emptyFunction;"

the freshly created XMLHttpRequest never calls back, the Channel its
been asigned to
never reaches "done" the Channel is dead.

To resolve that I came up with this patch.
Not quite shure if it introduces more problems than it solves:-)
Esp. I cant tell if XMLHttpRequest.abort() sets back the readyState back
to 0 on all browsers.

mf


Index: jdk-1.4/wicket/src/main/java/wicket/ajax/wicket-ajax.js
===================================================================
--- jdk-1.4/wicket/src/main/java/wicket/ajax/wicket-ajax.js
(Revision 518505)
+++ jdk-1.4/wicket/src/main/java/wicket/ajax/wicket-ajax.js
(Arbeitskopie)
@@ -403,7 +403,7 @@
                        this.busy = true;
                        return callback();
                } else {
-                       Wicket.Log.info("Chanel busy - postponing...");
+                       Wicket.Log.info("Channel busy - postponing...");
                        if (this.type == 's') // stack
                                this.callbacks.push(callback);
                        else /* drop */
@@ -487,7 +487,7 @@
        getTransport: function() {
                var t = Wicket.Ajax.transports;
                for (var i = 0; i < t.length; ++i) {
-                       if (t[i].readyState == 0 || t[i].readyState == 4) {
+                       if (t[i].readyState == 0) {
                                return t[i];
                        }
                }
@@ -713,7 +713,7 @@
                                this.done();
                        this.failure();
                }
-               t.onreadystatechange = Wicket.emptyFunction;
+               t.abort();
                this.transport = null;
         }
        }


Reply via email to