I haven't actually tried having multiple simultaneous requests with
this, but it's not using the global namespace, so it should work:

submitRequest("../yourURL.html",processResponse);

function submitRequest(url,handler) {
  var req = null;
  if (window.XMLHttpRequest) { // Non-IE browsers
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) { // IE
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  req.onreadystatechange = function() { processResponse(req); }
  req.open("GET",url,true)
  req.send();
}

function processResponse(asyncRequest) {
   if (asyncRequest.readyState == 4 && asyncRequest.status == 200) {
      alert(asyncRequest.responseText);
   }
}

On 8/19/05, David Durham <[EMAIL PROTECTED]> wrote:
> Hi --
> 
> There's been some traffic on this list involving XMLHttpRequests and
> javascript, and since it's Friday ...
> 
> My problem: How to use multiple asynchronous requests simultaneously
> without using the global namespace.  For instance, I'd like to create a
> little DirectoryTree widget that I can drop in pages like so:
> 
>          <script type="text/javascript">
>              new DirectoryTree("some_directory_name");
>          </script>
> 
> Ideally, I could drop as many of these widgets on the page as I want.
> 
> Then I have some javascript like so:
> 
>          DirectoryTree = function(directory, url) {
>              //setup
>              ...
>              execute(url, DefaultCallback);
>          }
> 
> Here's an execute method that supposed to trigger some kind of action:
> 
>          execute(url, callback) {
>              var cb = new callback();
>              cb.request = new XMLHttpRequest();
>              cb.request.onreadystatechange = callback.processResponse;
>              cb.request.open(this.METHOD, url, this.ASYNC);
>              cb.request.send(null);
>          }
> 
>          DefaultCallback = function() {
>              this.request = null;
> 
>              function processResponse() {
>                  log.info("decorating: " + this.request);
>              }
>          }
> 
> 
> The processResponse() method alerts:  "decorating: undefined".  I even
> tried:
> 
>          DefaultCallback = function() {
>              this.request = null;
>         }
> 
>          DefaultCallback.processResponse = function() {
>              log.info("decorating: " + this.request);
>          }
> 
> and got the same result.
> 
> I'm somewhat experienced with Javascript and it's OO concepts and event
> handling, but not terribly so.  I think what's happening here is that on
> readystate change triggers the creation of a new
> 'DefaultCallback.processResponse' object and therefore a new scope with
> no concept of the 'var cb = new callback()' scope.  Therefore, in order
> to get at the xmlrequest/response, I need to go through the global
> namespace or some other static-like namespace, which I don't really want
> to do because I'd like to avoid managing, say a queue of xml http
> requests.  I haven't looked through the xml http request stuff that was
> posted to struts sandbox (I think it's in sandbox, not really sure), but
> does anyone have ideas on this one, or can point me to some code or info
> with solution(s)?
> 
> 
> - Dave
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to