Avatar billede qualon1 Nybegynder
04. oktober 2006 - 18:12 Der er 6 kommentarer

Clear cache

Hej

Jeg bruger en menu fra http://www.milonic.com sammen med noget AJAX. Mit system udskriver et sidetræ, og når man trykker på hver side fremkommer der en menu fra den milonic menu.
Mit problem er så at jeg bruger AJAX, til at fx at oprette en ny side, jeg kan nem få ajax til at opdatere træet og jeg har også lavet sådan at efter træet er opdateret reloader den det <script> tag som henter menu punkterne til menuen.
Mit problem ligger så i, at menuen ikke vil være med til at reloade, da den tegner menuerne når siden loades. Jeg vil altså gerne kunne slette den cache javascript har lavet af disse menuer.
Nogle der kan hjælpe?
Avatar billede roenving Novice
05. oktober 2006 - 04:53 #1
¿No comprende?

-- men et gæt kunne være, at browseren opfatter kaldet som det samme, og derfor ikke undersøger muligheden for, at der kunne være en anden udgave ...

-- den klassiske løsning er, at man hæfter et timestamp på, så kaldet f.eks. er:

http://www.ditdomaine.dk/ajax/milonicmenu/script.js?uid=654654654654654

-- hvor man får javascriptet til at generere uid'et fra et Date-objekts time-funktion !-)
Avatar billede sbay Nybegynder
20. november 2008 - 09:04 #2
Kan du uddybe lidt, da jeg sidder i samme problem. Mit kald laves således:

onkeyup="ajax_showOptions(this,'getNewClichesByLetters',event)"

og funktionen ligger i filen ajax-list-cliches.php.

Jeg får returneret samme valgmuligheder, selvom nogle i mellemtiden har ændret status. Jeg kan alternativt oprette et nyt spørgsmål?!
Avatar billede olebole Juniormester
20. november 2008 - 09:26 #3
<ole>

Det siger ikke så meget. der må være mere kode

/mvh
</bole>
Avatar billede sbay Nybegynder
20. november 2008 - 10:17 #4
Dette er funktionen:
if(isset($_GET['getNewClichesByLetters']) && isset($_GET['letters'])){
    $letters = $_GET['letters'];
    $letters = preg_replace("/[^a-z0-9 ]/si","",$letters);
    $letters = strtoupper($letters);
    $sql = "SELECT CLICHENO FROM EDEMP.CLICHE3 where CLICHENO LIKE '".$letters."%' AND STATUS = '1'";
               
    $conn = odbc_connect("ASDK101","","");
    $res = odbc_exec($conn,$sql);
        odbc_close($conn);
    while($inf = odbc_fetch_array($res))
    {
        echo "CLICHE" ."###". trim($inf["CLICHENO"])."|";
    }   
    $res ="";
}

Den kaldes via ajax-dynamic-list_cliche.js:

    var ajaxBox_offsetX = 0;
    var ajaxBox_offsetY = 0;
    var ajax_list_externalFile = 'ajax-list-cliches.php';    // Path to external file
    var minimumLettersBeforeLookup = 1;    // Number of letters entered before a lookup is performed.
   
    var ajax_list_objects = new Array();
Avatar billede olebole Juniormester
20. november 2008 - 10:26 #5
Prøv at sætte denne ved hvert Ajax-kald:
    var ajax_list_externalFile = 'ajax-list-cliches.php?u=' + new Date().getTime();    // Path to external file

- hvilket blot er, hvad roenving viste med en fiktiv URL i første indlæg  =)
Avatar billede olebole Juniormester
20. november 2008 - 10:29 #6
Kort forklaring: da det timestamp, du laver med 'new Date().getTime()', altid vil være forskelligt, tror browseren, der altid er tale om unikke sider - og cache'er derfor ikke siderne  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB