Loading ...
Sorry, an error occurred while loading the content.

Re: XMLHttpRequest() , myReq.status in offline mode ?

Expand Messages
  • Domenico Strazzullo
    Apparently, with the loacalfile interface and ftp, xmlRequest.status returns 0, and this is the normal behavior with all browsers. It was originally filed as a
    Message 1 of 7 , Dec 6, 2007
    • 0 Attachment
      Apparently, with the loacalfile interface and ftp, xmlRequest.status
      returns 0, and this is the normal behavior with all browsers. It was
      originally filed as a Mozilla bug, but it has been resolved as
      invalid. See:

      https://bugzilla.mozilla.org/show_bug.cgi?id=331610

      and

      http://groups.google.com/group/mozilla.dev.ajax/browse_thread/thread/0
      ffb0e899cd404ff/c02ece139b6eed9a#c02ece139b6eed9a

      It is suggested to use a compound boolean test for 0 and 200 rather
      than removing the test altogether.

      Domenico


      --- In svg-developers@yahoogroups.com, "Domenico Strazzullo"
      <nst@...> wrote:
      >
      > André,
      >
      > > no, you need the importNode() thing, otherwise FF3 (all kinds:
      > alpha and
      > > beta and definitive) will not append your content. it doesn't
      harm
      > FF2
      > > because FF2 already supports this method. i expect opera to do it
      > too.
      >
      > I take your word for it and I confirm that Opera does it. So I get
      > this:
      >
      > addDoc(evt,document.importNode
      > (xmlRequest.responseXML.documentElement,true));
      >
      > and it works both local and remote (FF 2 and 3, Opera 9.2 and
      Safari)
      > simply with if (xmlRequest.status == 200) disabled. Here the very
      > last visible difference between the two routines is the event
      > passing, and, by Jove, it just comes to my mind!... something I
      read
      > a while back on an Ajax developers list that explained why passing
      > the event was necessary. But that's all I can recall and I didn't
      > take note, I just applied the mod.
      >
      > > your loop through the imported XML isn't needed because you don't
      > > necessarily need an <svg>-element, you can also import fragments
      > (they
      > > just need to be consistent, closed elements and so on)
      >
      > The loop is necessary for ASV because if the file has comments
      before
      > the <svg> ASV returns "object Comment" for node (retested so to
      avoid
      > red herrings. BTW, perhaps at this point red herrings should be
      > classified as a known, existing and consumable species. Given the
      > great number we catch we could be in business:)) and doesn't
      import.
      > But I agree the condition should be extended to accept any valid
      > fragment, or better, modified to just ignore the comments. I guess
      > I'll keep it for the time being.
      >
      > Domenico
      >
      >
      > --- In svg-developers@yahoogroups.com, "andre m. winter"
      > <ml.winter@> wrote:
      > >
      > > hi Domenico
      > >
      > > no, you need the importNode() thing, otherwise FF3 (all kinds:
      > alpha and
      > > beta and definitive) will not append your content. it doesn't
      harm
      > FF2
      > > because FF2 already supports this method. i expect opera to do it
      > too.
      > > your loop through the imported XML isn't needed because you don't
      > > necessarily need an <svg>-element, you can also import fragments
      > (they
      > > just need to be consistent, closed elements and so on)
      > >
      > > my question was about the xmlRequest.status. in an html
      environment
      > it
      > > shows 200, in local environment only 0. how to handle this in
      mixed
      > > environments?
      > >
      > > andré
      > > >
      > > > I didn't know it could work in local mode, thanks! I tested and
      > for
      > > > me it works both local and remote with Opera AND FF. I'm using
      > this
      > > > slightly different routine:
      > > >
      > > > ...
      > > > else if (window.XMLHttpRequest) {
      > > > function XMLHttpRequestCallback() {
      > > > if (xmlRequest.readyState == 4) {
      > > > // if (xmlRequest.status == 200) {
      > > > addDoc(evt,xmlRequest.responseXML.documentElement);
      > > > // }
      > > > }
      > > > }
      > > > var xmlRequest = null;
      > > > xmlRequest = new XMLHttpRequest();
      > > > xmlRequest.overrideMimeType("text/xml");
      > > > xmlRequest.open("GET",url,true);
      > > > xmlRequest.onreadystatechange = XMLHttpRequestCallback;
      > > > xmlRequest.send(null);
      > > > }
      > > > }
      > > > function addDoc(evt,node) {
      > > > var newdoc = node;
      > > > while (newdoc != null && newdoc.nodeName != "svg") {
      > > > newdoc = newdoc.nextSibling;
      > > > }
      > > > if (newdoc == null) {
      > > > alert("Cannot find <svg> element in " + node.parent.nodeName);
      > > > return;
      > > > }
      > > > myDestination.appendChild(newdoc);
      > > > }
      > > >
      > > > I only tested with Opera 9.24 and FF 2.0.0.10
      > > >
      > > > The last parameter of:
      > > > document.getElementById(myDestination).appendChild
      > (document.importNode
      > > > (myReq.responseXML.documentElement,true));
      > > >
      > > > is omitted, but I'm not sure that is what makes it happen.
      Apart
      > from
      > > > that difference, one other I can see is "document.importNode"
      > > >
      > > > Domenico
      > > >
      > > >
      > > >
      > > > --- In svg-developers@yahoogroups.com, "andre m. winter"
      > > > <ml.winter@> wrote:
      > > >
      > > >> hi,
      > > >>
      > > >> in firefox (2 & 3) the condition (myReq.status == 200) never
      > gets
      > > >>
      > > > true
      > > >
      > > >> in a local, non-http environment. that's the reason why i
      don't
      > use
      > > >>
      > > > it
      > > >
      > > >> when developping or teaching SVG as most of my students don't
      > run a
      > > >> webserver. so what's this condition about? any way to have a
      > > >>
      > > > generic
      > > >
      > > >> function that properly works both offline and online? below
      the
      > > >>
      > > > function
      > > >
      > > >> as it works in online mode.
      > > >>
      > > >> thank you for hints,
      > > >> andré
      > > >>
      > > >>
      > > >>
      > > >> function myAddXML(myURL,myDestination,myEncoding){
      > > >> if (window.XMLHttpRequest) {
      > > >> var myReq = new XMLHttpRequest();
      > > >> if(myReq) {
      > > >> myReq.overrideMimeType('text/xml');
      > > >> myReq.open('GET', myURL, true);
      > > >> myReq.onreadystatechange = function(){
      > > >> if (myReq.readyState == 4){
      > > >> if (myReq.status == 200){ // REMOVE
      FOR
      > > >>
      > > > LOCAL WORK
      > > >
      > > >>
      > > >> document.getElementById(myDestination).appendChild
      > > >>
      > > > (document.importNode(myReq.responseXML.documentElement,true));
      > > >
      > > >>
      > > >> }
      > > >> }
      > > >> }
      > > >> myReq.send(null);
      > > >> }
      > > >> return;
      > > >> } else if (window.getURL){
      > > >> //...
      > > >> }
      > > >> }
      > > >>
      > > >>
      > > >> --
      > > >
      > >
      > >
      > > --
      > >
      ___________________________________________________________________
      > > andre m. winter,
      > > cartography for internet and multimedia applications
      > > schiessstand 4/1, a6091 goetzens, tyrol, austria
      > > tel.: ++43.5234.32732
      > > http://www.vectoreal.com/ SVG consulting and
      development
      > > http://www.geotrace.net/ geo-localized high quality
      photographs
      > > http://www.carto.at/ print and online touristic map
      solutions
      > >
      >
    Your message has been successfully submitted and would be delivered to recipients shortly.