[Ajax] XMLHttpRequest() ism sIFR

Pagina: 1
Acties:
  • 679 views sinds 30-01-2008
  • Reageer

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Aloha!

Ik maak op het moment een website met daarin wat techniekjes die mij onbekend waren..
Zo gebruik ik op het moment ook sIFR om mooie kopjes te maken boven mijn tekst...

Nu mijn probleem:
Ik heb een flash menuutje links en een div in het midden genaamd 'text'. Het leek me leuk om Ajax te gebruiken om te navigeren,, dit doe ik met de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 ...wat meer compatibilteit geblaat.. 

    if (!xmlhttp && !alerted) {
                try {
                    xmlhttp = new XMLHttpRequest();
                } catch (e) {
                    alert("Je hebt een browser nodig die het XMLHttpRequest object ondersteunt.")
                }
            }

            function verwerk() {
                if (xmlhttp.readyState==4) {
                    document.getElementById("text").innerHTML = xmlhttp.responseText;
                }
            }

            function getVars(url) {
                if (xmlhttp) { 
                    xmlhttp.open("GET", url, true);
                    xmlhttp.onreadystatechange=verwerk
                    xmlhttp.send(null)
                }
            }


De url in getVars(url) is een PHP documentje met een switch.. deze geeft tekst terug. En dat is dus het probleem.... Het blijft bij tekst

Ik heb hiervoor de volgende oplossingen bedacht,, en deze kan ik dus beide niet implementeren:P

- het PHP bestand geeft een flashfile terug
- het PHP bestand geeft een werkende javascript code terug
- op de een of andere manier sIFR reladen bij andere navigatiekeuze..

Mja ik ben niet zo heel erg bekend met Javascript,, en ik hoop ook niet heel erg gebashed te worden nu.. maar het lijkt me dus dat het probleem erin ligt dat Javascript geladen moet worden voordat het iets laat zien; en dat Ajax dit dus niet doet.. Pagina reload wil ik graag voorkomen omdat je dan het chille effect van Ajax niet hebt.

Ik hoop dat ik mijn probleemstelling goed heb overgebracht en dat jullie me kunnen helpen..

Sowieso sneu


  • Wacky
  • Registratie: Januari 2000
  • Laatst online: 20-01 18:47

Wacky

Dr. Lektroluv \o/

Plak de javascript sIFR code achter je javascript AJAX code?

Nu ook met Flickr account


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Probeer dit eens in je JS:
code:
1
2
3
4
5
 if (xmlhttp.readyState==4) {  
document.getElementById("text").innerHTML = xmlhttp.responseText; 
sIFR.replaceElement("h1", named({sFlashSrc: "./myriad.swf", sColor: "#5e005f", sBgColor: "#FFFFFF"}));  
sIFR.replaceElement("h2", named({sFlashSrc: "./myriad.swf", sColor: "#FFFFFF", sBgColor: "#dec6de"}));  
}


Ik denk dat dat wel gaat werken!

  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Stom! Ik dacht dat ik dat al had gedaan,, maar blijkbaar niet goed genoeg :)
Super bedankt!

Peedy je bent een eikol ;)


Andere vraag, ik hoop niet dat het weer zo simpel is:

code:
1
2
3
                if (xmlhttp) { 
                    xmlhttp.open("GET", url, true);
                    xmlhttp.onreadystatechange=verwerk


url is dus een PHP scriptje met switch functie die text terug echoot.
Als ik dan echo "<a onclick='........ doe dan werkt dat niet..
Is dit normaal of doe ik iets verkeerd?

[ Voor 48% gewijzigd door Stoep op 05-09-2006 20:39 ]

Sowieso sneu


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
De code moet zijn
code:
1
<a onClick="getVars('fetch.php?id=whatever')">Klik</a>

Als je meer variabelen mee wilt sturen, bijvoorbeeld in welke div je het wilt innerHTML'en, dan moet je zo doen:
code:
1
xmlhttp.onreadystatechange=function(div) { <!-- functie --> }

Dit werkt dus NIET:
code:
1
xmlhttp.onreadystatechange=verwerk(div)


Stukje van mijn gebruikte code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function getDoc(url, doFunc, id) {
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange= function() { 
        if (xmlhttp.readyState==4)
            if (xmlhttp.status==200)
                doFunc(xmlhttp, id);
    }

    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
}

function writeHTML(req, id) {
    document.getElementById(id).innerHTML = req.responseText;
}


Die roep ik dan aan met:
code:
1
<a onClick="getDoc('fetch.php?id=whatever', writeHTML, 'divnaam')">Klik</a>


Btw, voor het visuele effect:
code:
1
<a onMouseOver="this.style.cursor='hand'" onClick="getDoc('fetch.php?id=whatever', writeHTML, 'divnaam')">Klik</a>

[ Voor 52% gewijzigd door Peedy op 05-09-2006 20:45 ]


  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
pEeDy16 schreef op dinsdag 05 september 2006 @ 20:42:
........

Die roep ik dan aan met:
code:
1
<a onClick="getDoc('fetch.php?id=whatever', writeHTML, 'divnaam')">Klik</a>
Lieve lieve lieve LIEVE PJ,

Puntje 1: Ik praat met je op MSN
Puntje 2: Mijn fout, ik wil een popup krijgen en niet dat suffe gedoe,, ga het wel ff proberen ;)
Puntje 3: Als jij het zo goed weet mag je het doen ook1#@#%

Sowieso sneu


  • Stoep
  • Registratie: Juni 2006
  • Laatst online: 18-07-2022
Ok :) Opgelost! Was er toch echt een poos mee bezig geweest :/

Sowieso sneu


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 26-01 20:14
Hoe heb je het nu uiteindelijk opgelost dan?
Pagina: 1