Christoph Zurnieden: XMLHttpRequest und Opera mit 304

Beitrag lesen

Hi,

du hast den Event onreadystatechange nicht verstanden. Inhalt wird erst gesetzt, wenn die Datei gelesen wurde, du versuchtst aber den Wert schon zurück zu geben wenn die Funktion mit grosser wahrscheinlichkeit noch gar nicht ausgelöst wurde.

Ja, da hatte ich mich wohl auch von der anonymen Funktion auf's Glatteis fuehren lassen, ich ging davon aus, das die ausreichend trennt. Nuetzt aber natuerlich sowieso nix, denn es wurde ja auch noch ausdruecklich asynchrone Abfrage bestellt.

Da wollte ich es aber nun ein wenig ordentlich machen und musste feststellen, das ich auf eine XML-Anfrage einen 304 zurueckbekomme, da der Opera (8.5) eine entsprechende Anfrage stellt (aber noch nicht geprueft, nur eine Vermutung).
Mache ich da 'was falsch?
(Basissystem ist ein Debian 3.0r2 mit Update vom 14.02.2004)
Aufrufende Datei:

  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head><title>Hu?</title>  
<script type="text/javascript">  
var xmlHttp = false;  
  
function showHit(_Hit){  
  var temp1;  
  var temp2;  
  var Hit = _Hit;  
  
  temp1 = document.createElement("br");  
  temp2 = document.createTextNode(Hit);  
  document.getElementById("hitlist").appendChild(temp1);  
  document.getElementById("hitlist").appendChild(temp2);  
}  
function clearHits(){  
  var arnold = document.getElementById("hitlist");  
  var adam   = arnold.cloneNode(false);  
  
  arnold.parentNode.replaceChild(adam,arnold);  
}  
function procData(){  
      response  = xmlHttp.responseXML;  
      vn   = response.getElementsByName("vorname")[0].firstChild.data;  
      nn   = response.getElementsByName("nachname")[0].firstChild.data;  
      alert(nn);  
      showHit("Vorname:" + vn);  
      showHit("Nachname:" + nn);  
}  
function procResponse(){  
  if(xmlHttp.readyState == 4){//alert(xmlHttp.status);  
    if(xmlHttp.status == 200){  
      procData();  
    }  
  }  
}  
function getData(){  
  //var xmlHttp = false;  
  
  // Internet Explorer  
  try{  
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");  
  }  
  catch(e){  
    try{  
      xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");  
    }  
    catch(e){  
      xmlHttp  = false;  
    }  
  }  
  // Mozilla, Opera und Safari  
  if (!xmlHttp  && typeof XMLHttpRequest != 'undefined'){  
    xmlHttp = new XMLHttpRequest();  
  }  
  if (xmlHttp){  
    xmlHttp.open('GET', "data.xml", true);  
    xmlHttp.onreadystatechange = procResponse;  
    xmlHttp.send(null);  
  }  
}  
</script>  
</head>  
<body>  
<form action="" onsubmit="getData();return false;">  
Push button:<br>  
<input type="button" value="push me!" onclick="getData();">  
</form>  
<div id="hitlist"></div>  
</body>  
</html>  
  

Daten-XML:

  
<?xml version="1.0" standalone="yes"?>  
<!DOCTYPE data [  
<!ELEMENT data (row)+>  
<!ATTLIST data  
  name     CDATA   #IMPLIED  
  atime    CDATA   #IMPLIED  
  ctime    CDATA   #IMPLIED  
  mtime    CDATA   #REQUIRED  

>  

<!ELEMENT row (cell)+>  
<!ATTLIST row  
  id       ID      #REQUIRED  
  name     CDATA   #IMPLIED  
  atime    CDATA   #IMPLIED  
  ctime    CDATA   #IMPLIED  
  mtime    CDATA   #IMPLIED  

>  

<!ELEMENT cell (#PCDATA)>  
<!ATTLIST cell  
  name     CDATA   #IMPLIED  
  atime    CDATA   #IMPLIED  
  ctime    CDATA   #IMPLIED  
  mtime    CDATA   #IMPLIED  

>  

<data mtime="Fri, 14 Oct 2005 15:43:54 +0200">  
<row id="r001">  
<cell name="vorname">Otto</cell>  
<cell name="nachname">Meier</cell>  
</row>  
<row id="r002">  
<cell name="vorname">Hans</cell>  
<cell name="nachname">Schulze</cell>  
</row>  
</data>  

Habe ich da jetzt irgendeinen bloeden Haken eingebaut (ist ja schon ungefaehr zwei Jahre her, das ich das letzte Mal mit XMLHttpRequest gearbeitet habe), ist das der Opera oder ein Bug im Apachen oder ... ?

so short

Christoph Zurnieden

0 58

XMLHttpRequest für Firefox

Marco
  • javascript
  1. 0
    Marc Reichelt
    1. 1
      Christian Kruse
  2. 0
    Christoph Zurnieden
  3. 0
    Struppi
    1. 0
      Marco
    2. 0

      XMLHttpRequest und Opera mit 304

      Christoph Zurnieden
      1. 0
        molily
        1. 0
          Christoph Zurnieden
          1. 2
            molily
            1. 0
              Christoph Zurnieden
              1. 1

                DOM, XML Attributtypen, getElementsByName()

                Tim Tepaße
                1. 0
                  Christian Kruse
                  1. 0
                    molily
                    1. 0
                      Christian Kruse
                      1. 0
                        molily
                        1. 0
                          Christian Kruse
                2. 0
                  Christoph Zurnieden
                  1. 0
                    Christian Kruse
                    1. 0

                      xml:id, getElementById()

                      Tim Tepaße
                      1. 0
                        molily
                    2. 0
                      Christoph Zurnieden
                      1. 0
                        Christian Kruse
                        1. 0
                          Christoph Zurnieden
                          1. 0
                            Christian Kruse
                      2. 0
                        Christian Kruse
                        1. 0
                          Christoph Zurnieden
                          1. 0
                            Christian Kruse
                            1. 0
                              Christoph Zurnieden
                              1. 0
                                Christian Kruse
                                1. 0
                                  Christoph Zurnieden
                                  1. 0
                                    Christian Kruse
                                    1. 0
                                      Christoph Zurnieden
                                      1. 0
                                        Christian Kruse
                                        1. 0
                                          Christoph Zurnieden
                                          1. 0
                                            Christian Kruse
                                            1. 0
                                              Christoph Zurnieden
      2. 0
        Orlando
        1. 0
          Christian Kruse
        2. 0
          Christoph Zurnieden
          1. 0
            Ashura
          2. 0
            molily
            1. 0
              Christoph Zurnieden
              1. 0
                molily
                1. 0
                  Christoph Zurnieden
              2. 0
                at
                1. 0
                  Christoph Zurnieden
                  1. 0
                    at
                    1. 0
                      Christoph Zurnieden
                      1. 0
                        at
  4. 0
    Raik
    1. 0
      Thomas Meinike
      1. 0
        Raik
        1. 0
          Raik
        2. 0

          wozu ist readyState 1-3 nutzbar?

          Raik
          1. 3
            Tim Tepaße
            1. 0
              Raik
            2. 0
              Christoph Zurnieden