Ajax ... readyState

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ajax ... readyState

    Hallo,

    kann sein, dass ich gerade Mist gebaut hatte oder atm auf dem Schlauch stehe, aber hab nen Problem mit einem Ajax-Script, was eigentlich mal funktioniert hat ...

    Grundajax:
    Code:
    function query(url,bool,id){
     //Anzeige
     document.getElementById('description').innerHTML =
     "Bitte warten<img src='img/dots.gif' alt='...'>";
     //XML Objekt initialisieren
     if(window.ActiveXObject) {
     	try{
    	 	xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
     	} catch (e) {
    	 	try{
    		 	xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     		} catch (e){
     		}
    	}
     } else if (window.XMLHttpRequest) {
    	 try {
    		 xmlHttp = new XMLHttpRequest();
    	 } catch (e) {
    	 }
     }
     if(xmlHttp){
    	 xmlHttp.open('GET', url, true);
              if(bool){
                      alert("true");
    	 	xmlHttp.onreadystatechange = setImage(id);
              }else{
              	xmlHttp.onreadystatechange = update_image;
              }
    	 xmlHttp.send(null);
     }
    }
    Das funktioniert ... so weit, so gut .....
    Dann kommen wir unten in die if-Verzweigung und rufen, da bool true ist, setImage auf.... (true wird auch ausgegeben)
    setImage:
    Code:
     function setImage(id){ // siehe editor_functions.js
       alert("lallalalla");
       if (xmlHttp.readyState == 4){
         alert("true2222");
         var response = xmlHttp.responseText;
         ###blubb - id
       }
    Hier wird lalalalla ausgegeben... Fazit: Er ist in der Funktion, aber ich komm beim besten willen nicht in die if rein ....

    Was mach ich falsch?
    Die Datei, an die das ganze gesendet wird gibt auch als response "ABC....XYZ" aus .... (hab die url vom query() einfach in browser eingegeben....)
    -> Die php-Datei wird fertig ... aber auf readyState 4 komme ich nicht..

    Hoffe mal dass mir wer helfen kann

    mfg

  • #2
    du hast xmlHttp nur in der Funktion query erstellt. Probier mal die Variable global zu machen, d.h sie schon außerhalb der Funktionen zu definieren.

    Edit:

    Es gibt wunderschöne Plugins für den Firefox wo du genau überwachen kannst, wie Client und Server kommunizieren. Guck mal obde sowas findest, ist zum Debuggen immer sinnvoll.
    Zuletzt geändert von Click; 02.12.2007, 11:05.
    Du kannst jeden Tag wie deinen letzten leben, du musst nur jeden Tag das Gleiche tun.

    Denk' mal drüber nach!

    Kommentar


    • #3
      Ich hatte xmlHttp auch mal mit übergeben, weil ich mir das evtl dachte, aber das half nicht .... genauso wie das vorher definieren.

      Bei update-image funktioniert es ja auch:
      Code:
      function update_image(){ //Bildanzeige aktualisieren
      	if (xmlHttp.readyState == 4){
      		result = xmlHttp.responseText;
      		alert(result);
      	}
      }
      und ja, es wird ausgegeben,....

      mfg

      Kommentar


      • #4
        Firebug eignet sich für sowas super
        Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
        - ...und solche Behauptungen in "falsches Resourcenmanagement"

        Kommentar


        • #5
          Original geschrieben von zerni
          Firebug eignet sich für sowas super
          Kannst mir auch sagen, wie ich richtig damit umgehen muss?^^
          Ich hab die Seite mit dem Script geladen und auch die Funktionen etc. aufgerufen, aber das Firebug symbol bleibt bei einem grünen Haken..

          Mach ich was falsch?

          Kommentar


          • #6
            Klick mal drauf auf das grüne Icon.

            Und dann auf "Net".

            Kommentar


            • #7
              Hab ich getan (grundeinstellung "all") und dann beim php-script geguckt...

              Die datei gibt wirklich das aus, was sie auch soll .... aber trotzdem komm ich nicht in die if-verzweigung.... oder hab ich nun auf das falsche geachtet?

              Kommentar


              • #8
                Original geschrieben von Click
                du hast xmlHttp nur in der Funktion query erstellt. Probier mal die Variable global zu machen, d.h sie schon außerhalb der Funktionen zu definieren.
                Oder spendiere setimage() und update_image() einen (weiteren) Parameter, mit dem du das xmlHTTP-Objekt übergibst.
                Eventell erreichst du das in den Funktionen auch über die this-Referenz. So genau habe ich mir deinen Code jetzt nicht angesehen. Jedenfalls scheint xmlHTTP in den Funktionen kein Objekt zu sein und dann muß das if() ja fehlschlagen.
                Zuletzt geändert von onemorenerd; 02.12.2007, 15:10.

                Kommentar


                • #9
                  Original geschrieben von Blackgreetz
                  Ich hatte xmlHttp auch mal mit übergeben, weil ich mir das evtl dachte
                  @onemorenerd: Wie du siehst, hatte ich das schonmal getan, und zwar so:
                  -> onreadystatechange = setimage(xmlHttp,id);

                  falsch übergeben?^^

                  Ach und zu update_image ...Diese Funktion funktioniert ...warum auch immer ...

                  mfg

                  Kommentar


                  • #10
                    xmlHttp.onreadystatechange = foobar();
                    xmlHttp.onreadystatechange = foobar;

                    sind verschiedene Dinge.

                    Kommentar


                    • #11
                      Original geschrieben von onemorenerd
                      xmlHttp.onreadystatechange = foobar();
                      xmlHttp.onreadystatechange = foobar;

                      sind verschiedene Dinge.
                      Das hab ich auch gerade gemerkt
                      Wusste nur nicht, wie ich die id dann auf zur setImage bekomme, aber habs nun gelöst:

                      1. id global definiert
                      2. im query() this.id = id
                      3. den parameter löschen und setImage aufrufen

                      Hab zwar jetzt noch ein Problem mit dem entstehenden Bild bzw. dem verschieben ....

                      Kanns ja mal nebenbei fragen: http://gutscheinvordrucke.de/festtage/engel.html ...wenn ich da einen der texte klicke und den verschiebe, dann sagt der browser nicht, dass man das bild nicht makieren kann ....
                      bei mir wird aus der maus erst das symbol zum verbotenen makieren .... dann nehm ich die maus kurz hoch und dann kann ich meines verschieben ....

                      liegt das an der schnelligkeit, wie der das script ausgeführt wird?

                      Kommentar


                      • #12
                        Der Engel hat von vornherein style="cursor:move;".

                        Kommentar


                        • #13
                          Hat meiner ja auch, wenn man über das bild kommt, aber da ich ja dann die taste gedrückt halten muss, um das bild zu bewegen, kommt bei meinem script das symbol vom firefox, bild kann nicht makiert werden ... also dieser kreis ..

                          würde also denken, dass mein script langsamer arbeitet als das von den .... sodass das bild bei mir irgendwie nicht so schnell bewegt wird ....


                          hm .... kennt jmd eine seite / programm, womit man die schnelligkeit eines javascripts optimieren kann...?

                          mfg

                          Kommentar

                          Lädt...
                          X