[ _korso_ @ 19.09.2007. 15:59 ] @
Dakle ovako...
Imam na stranici par slicica velicine, 16x16 px. Ukoliko se klikne na neku od istih, izvrsavaju se par upita kroz Ajax, upisuje se u bazu par slogova, posle toga se jos ispise neki tekst (mozda na vise mesta), tipa
"Updated! ". Ceo proces traje 2-3 sec. Mada u skorije vreme moze da traje i do 10 sekundi...
Problem je sledeci: Hteo bih da dok traje ova akcija da se slicica na koju sam kliknuo promeni u neku da se dobije "loading" efekat
(kao npr. kada Firefox ucitava stranicu, pa ono sto se vidi na tabu).

Funkcija koju zovem kada kliknem na slicicu je:


Code:

function writePermission(e) {
    start_animating(e);
        var xmlHttp = GetXmlHttpObject();
        if (xmlHttp==null) {
            alert ("Browser does not support HTTP Request");
            return;
        }
            .
            .
            .
            
        xmlHttp.open("POST", url, false);
        xmlHttp.send(null);
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) {
            .
            .
            .
            //do something
            }
        }
    
    stop_animating(e);
}


a start/stop_animating funkcije:
Code:


function start_animating(e) {
     previous_animating_img = e.src;
     e.src = "/style/default/images/loading.gif";
}


function stop_animating(e) {
     e.src = previous_animating_img;
}


Ali ovo ne radi...
E sada probao sam da
posle poziva funkcije start_animating u writePermission() ubacim
alert(e.src) i slicica se stvarno izmenila (zamenjena je sa loading.gif),
a kada isti alert stavim posle stop_animating alert mi kaze da se src slicice
vratio na prvobitni (sto se i vidi)...

U cemu je problem?




[ Br@nkoR @ 19.09.2007. 19:28 ] @
Pokušaj da u funkciji writePermission, odmah posle poziva funkcije start_animating, ostatak kôda pozoveš unutar eventa onload slike na koju je korisnik kliknuo, ne zaboravi da unutar tog istog eventa odmah poništiš isti kako ne bi upao u beskonačnu petlju.



edit: promenjen naslov poruke.

[Ovu poruku je menjao Br@nkoR dana 20.09.2007. u 08:12 GMT+1]
[ korisnicko_ime @ 27.10.2007. 16:34 ] @
A moze li ovako da se dobije efekat loading...

Code:

var Ajax=false;
    if(window.XMLHttpRequest){
        Ajax=new XMLHttpRequest();
    }
    else if (window.ActiveXObject){
        Ajax=new ActiveXObject("Microsoft.XMLHTTP");
    }


function dajPodatke(izvor,divID)
    {
        if(Ajax){
        var obj=document.getElementById(divID);
        Ajax.open("GET", izvor);
        
        Ajax.onreadystatechange=function()
            {
                if(Ajax.readyState==1 )
                {
                    obj.innerHTML=document.write('ucitava se...');
                }
            
                if(Ajax.readyState==4 && Ajax.status==200)
                {
                    obj.innerHTML=Ajax.responseText;
                }
            }
        Ajax.send(null);
        }
    }
[ Vlatko Zdrale @ 30.10.2007. 03:00 ] @
A jel ti nije lakse da samo menjas vidljivost slike?
znaci u start_animating(e) document.getElementById(divID).display='block';
a posle "// do_something" document.getElementById(divID).display='none' ;