/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
FF og AJAX - XMLHttpRequest
Fra : Birger


Dato : 06-10-07 10:39

Hej NG.

Jeg har haft lidt bøvl med FF og XMLHttpRequest, og syntes lige jeg ville
dele lidt af hvad jeg har fundet frem til. Skal dog først lige sige, at det
er ikke lykkedes mig at finde noget dokumentation for afvigelsen - kan blot
konstatere at det virker efter hensigten her.

XMLHttpRequest anvendes til at hente data fra serveren asynkront - altså så
en sides indhold kan ændres efter siden er blevet hentet.
XMLHttpRequest anvendes sammen med (java)script, hvorfor teknikken ofte
betegnes AJAX - Asynkron Javascript And XML.

http://www.w3.org/TR/XMLHttpRequest/

Det kan så gøres på flere måder.
Man kan GET eller POST - altså overføre parametre fra clienten (hjemmesiden)
til serveren via "kommandolinen" (GET) eller i en separat forbindelse
(POST).
Og man kan vælge om kaldet skal være synkront eller asynkront. Dette
betegnes ellers ofte som blocking eller non-blocking. Vælger man asynkront,
vil det script der bruger kaldet fortsætte efter at have sat det i gang -
vælger man synkront, vil scriptet vente med at forsætte, til kaldet er
afsluttet.
Ved at kombinere GET/POST med asynkron/synkron er der altså 4 forskellige
måder at anvende XMLHttpRequest på.

Under udførelsen af sit kald, rapporterer XMLHttpRequest tilbage om sin
tilstand, ved at kalde en (java)script funktion som angives i parametren
onreadystatechange.

Og tingene fungerer, så vidt jeg har kunnet konstatere som de skal i IE6,
IE7, Opera og FF - med een eneste undtagelse...

Hvis man vælger at POSTe parametre, og anvende synkron (blocking)
overførsel, kan FF ikke finde ud af tingene. Kun hvis man har Firebug
installeret og aktiveret, er der "hul igennem", og man får de forventede
resultater.
Og så alligevel.
Med ovennævnte kombination, hedder onreadystatechange pludselig onload i
stedet for i FF.
Men kun i FF. De andre skal stadig have callback funktionen i
onreadystatechange.
Og værre endnu. Hvis FF har en værdi i onreadystatechange, virker en værdi i
onload heller ikke.

nav = window.navigator.appName;
if ( nav.indexOf( 'Netscape') > -1) {
req.onload = AjaxBack;
}
else {
req.onreadystatechange = AjaxBack;
}

Så virker http://bbsorensen.dk også i FF og også uden Firebug.

Birger



 
 
Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste