Jump to content
Sign in to follow this  
Dead Man Walking

"Loading..." u uglu dok korisnik čeka

Recommended Posts

Dakle potrebno mi je jednostavno ispisivanje "Loading..." u uglu dok čitač radi jer radim na sajtu za upload videa i dok se uploaduje tako veliki fajl ima mnogo vremena za čekanje.

 

Ne odgovara mi da ispis pokreće dugme za upload zato što posle njega ide tek validacija na serveru. A ako probam u php-u da ispišem neki js pre nego što krene sam upload ništa se ne ispiše dok server ne završi sve...

 

Probao sam nekoliko pluginova i nisam uspeo ni jedan da nadesim da radi.

 

Da li neko ima neko provereno rešenje?

Share this post


Link to post
Share on other sites

Ako sam te dobro razumeo, ti bi kao neki progres bar dok se upload ne zavrsi, a to ne mozes da izvedes, jer ti php vrati samo rezultat. Ako jesam, onda koristi ajax, evo ti najjednostavniji primer:

 

ajax.js

function ajaxFunction() {
    var xmlHttp;
    try {
            // Firefox, Opera 8.0+, Safari i ostali "NORMALNI" browseri
            xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {
        // IE - (Imbecil Engine (Internet Explorer))
        try {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                alert("Tvoj browser ne podrzava AJAX!");
                return false;
            }
        }
    }
    xmlHttp.onreadystatechange=function() {
        
        if(xmlHttp.readyState==4) {
            document.getElementById("rezultat").innerHTML = xmlHttp.responseText;
        }
        else {
            document.getElementById("rezultat").innerHTML = "Obrada u toku...";
        }
    }
    var uploader = document.getElementById('uploader').value;

    var url="process.php?uploader="+uploader;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

 

Ovde si prosledio skripti samo jedan parametar, to je npr. uploader. Ne znam kako tacno radis, pa napisah samo ovaj primer. Dakle ova funkcija ce u pozadini pokrenuti skript i dok se on ne izvrsi ispisivace "Obrada u toku...".

Na elemente forme moras stavljati razlicite idove, i kao submit forme stavi onclick="ajaxFunction()".

Promenljive u php skriptu kupis sa GET.

 

Nadam se da sam ti pomogao, ako sam uopste dobro razumeo problem.

Share this post


Link to post
Share on other sites

Nisam sad u mogućnosti ali probaću kad budem mogao. Jedino što sad vidim je da ne mogu da koristim GET jer koristim CodeIgniter.

 

Drugo, pošto se validacija unetih podataka radi na serveru nije mi jasno kako ovo onclick onda...

 

Al' hajd da ja prvo probam pa ću se onda javiti.

Share this post


Link to post
Share on other sites

pa u skriptu recimo uradis npr:

 

if($uploader == ""){
die("1");
}
elseif($nesto == ""){
die("2");
}
else{
//sav kod za upload fajla
die("0");
}

 

a u ajax.js uradis recimo:

function rezultat(txt){
    document.getElementById("rezultat").innerHTML = txt;
}

if(xmlHttp.readyState==4) {
            //document.getElementById("rezultat").innerHTML = xmlHttp.responseText;
            globalReturn = xmlHttp.responseText;
            if (globalReturn=="1") rezultat("Niste upisali korisničko ime.");
            else if (globalReturn=="2") rezultat("Niste upisali nesto drugo.");
            else if (globalReturn=="0") rezultat("Uploadovali ste fajl, bravo.");
}

 

Tako si omogucio proveru na serveru i vratio ajaxovan rezultat greske ako je ima, a ako ne vratio si ajaxovanu poruku o tome. A u medju vremenu se vrti neki loading. :)

Share this post


Link to post
Share on other sites

Ne mogu da verujem šta mi je na kraju palo na pamet i kako sam ovo uradio...

 

function loadingFunction() {

            document.getElementById("loading").innerHTML = "Loading...";
}

<input type="submit" value="Upload" onClick="loadingFunction()" />

 

I ništa više! :)

 

Ako validacija ne prođe u skripti CodeIgniter praktično ponovo učitava stranicu tako da loading prekine odmah. Ako krene upload, loading počne i kad se završi upload stranica se ponovo učitava i loading opet prestane. Jednotavno da jednostavnije ne može biti...

 

Hvala na pomoći i cimanju, ne bih ni probao ovo da nisam prvo krenuo sa ovim Ajaxom gore.

Share this post


Link to post
Share on other sites

- Da li bi iko instalirao ceo APC samo zbog upload progress bar-a?

- Koliko shared hostinga ima instaliran APC?

- Na koliko shared hostinga mozes da instaliras APC?

 

 

A pored toga postoji milion drugih, alternativnih resenja (flash/js) ako ti je asinhroni upload bas potreban (sto ovde nije slucaj) koja rade sasvim ok..

 

http://demo.swfupload.org/v220/index.htm

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...