[ hrib @ 05.12.2010. 10:59 ] @
Napravio sam ajax/jquery skriptu kojom rotiram slike i imam problem u ie8.
Stvar funkcionira tako da postavim setInterval kojim pozivam funkciju za random rotiranje, dok korisnik ne klikne na gumb za sljedeću (tada se radi clearInterval i dalje korisnik sam lista - to radi ok). Xml datoteka mi se kreira pomoću php-a, funkcijom koja prima kao vrijednost parametra 0 za random odabir slike.

Problem je sa internet explorerom 8, koji kad se bira random slika, uvijek odabere istu.
Primijetio sam da ako u drugom tabu pozovem php datoteku koja generira xml, te mi se generira npr. slika broj 5, prebacim se na tab sa webom, u ie8 će random odabrati baš sliku 5. Tako i za sve ostale primjere.

Da pokušam pojasniti što sam zaključio.
Moguće je da ie8 ne radi novi request za već učitanu istu datoteku? Ili radi neki cache xml datoteke, i ako se pozove ista xml datoteka on je ne učitava ponovno?
Putanja do datoteke ako je odabran random je ovakva
Code:
var xml_dat = base_url + "index.php/header_slike_xml/index/0";

Kod klika na sljedeću poziva se uvijek druga datoteka, i stvar funkcionira.
Code:
 var xml_dat = base_url + "index.php/header_slike_xml/index/" + sljedeca;

Ovu varijablu sljedeća dobivam iz xml-a (uzimam broj trenutne slike i uvećavam za 1).

U nastavku dio ajaxa:
Code:

function new_XHR() { // kreiranje novog xml http requesta
    
    var xhr;
    
    try 
    {
        xhr = new ActiveObject("Msxml2.XMLHTTP");
    } 
    catch(e) 
    {
        try 
        {
            xhr = new ActiveObject("Microsoft.XMLHTTP");
        }
        catch(E)
        {
            xhr = false;
        }    
    }
    
    if (!xhr && typeof XMLHttpRequest != 'undefined')
        xhr = new XMLHttpRequest;
    
    return xhr;    
}
function AjaxHeaderSlike(tipa) {

    var tip = tipa; // 1 - sljedeća, 0 - random
    
    myxhr = new_XHR();
    
    if (tip == 0) {    
        var xml_dat = base_url + "index.php/header_slike_xml/index/0";
    } else if (tip == 1) {
        sljedeca++;
        var xml_dat = base_url + "index.php/header_slike_xml/index/" + sljedeca;
    }
    
    myxhr.onreadystatechange = AjaxHeaderSlikeCb;
    myxhr.open('GET', xml_dat);
    myxhr.send(null);
}


Kako riješiti ovaj problem? Da napomenem kako skripta uredno radi u ff, operi i safari-u.
[ Aleksandar Ružičić @ 05.12.2010. 15:32 ] @
pa najverovatnije explorer kesira taj xml (mada nisam siguran dok ne bih napravio test situaciju ali lici da je to u pitanju) pokusaj prvo da dodas neki random podatak u url. ne mora random moze i timestamp - bitno je samo da svaki put dobijes drugi url:
Code (javascript):

var xml_dat = base_url + "index.php/header_slike_xml/index/0?ts=" + +new Date;
 


to ti je najjednostavnije resenje, ali najbolje bi bilo da sa serverske strane pomocu http headera kazes browseru da ne kesira taj fajl
[ hrib @ 05.12.2010. 21:36 ] @
Hvala, ovo je rješilo problem. Javim ako pronađem bolje rješenje ili uzrok tog problema.
[ Aleksandar Ružičić @ 06.12.2010. 03:01 ] @
ako sa tim radi onda definitivno browser kesira rezultate xhr upita.

mozes i da pokusas da koristis POST umesto GET upita, POST ne bi trebao nikad da se kesira.

i jedna dobronamerna preporuka: batali XML, koristi JSON
[ MilosDj @ 09.12.2010. 00:22 ] @
Citat:
batali XML, koristi JSON
Second that