Avatar billede soerenlyn Nybegynder
07. august 2007 - 13:11 Der er 17 kommentarer og
1 løsning

Ajax status=200 i Firefox.

Hej Eksperter.

Jeg har en funktion (AjaxLoad), hvor med jeg kalder en asp-side der skal sende en mail. Når den er sendt Response.Write'er den, der dermed bliver reg.responseText, som så bliver overført til et div-element på side, jvf nedenstående.

function createXHR(){
    var req=false;
    try{req=new ActiveXObject('Msxml2.XMLHTTP')}
    catch(err2){
        try{req=new ActiveXObject('Microsoft.XMLHTTP')}
        catch(err3){
            try{req=new XMLHttpRequest();}
            catch(err1){req=false}
        }
    }
    return req
}

function AjaxLoad(a,b) {
    var req=createXHR();

    req.onReadyStateChange=function(){
        if(req.readyState==4&&req.status==200){
            if(b!=''){document.getElementById(b).innerHTML=req.responseText}
        }
    }

    req.open("GET",a,true);
    req.send(null)
}

AjaxLoad('aspside.asp','div-id');


Jeg har fået at vide at status=200 er hvad den skal gøre når den har udført asp-siden. Denne kode virker i IE, men ikke i helt i Firefox.
Firefox sender mailen, men den sender ikke req.responseText til mit div-element.

Er det sådan at det ikke hedder status=200 i FF?

Håber I forstår mig, og kan hjælpe mig :)
Avatar billede erikjacobsen Ekspert
07. august 2007 - 13:39 #1
Hvad siger FFs fejlkonsol?
Avatar billede soerenlyn Nybegynder
07. august 2007 - 13:44 #2
Tænker du på om den giver fejl på siden? DEt gør den ikke.
Avatar billede erikjacobsen Ekspert
07. august 2007 - 13:47 #3
Nej, jeg tænker på om du har kigget i FFs fejlkonsol.
Avatar billede soerenlyn Nybegynder
07. august 2007 - 13:47 #4
Det ved jeg ikke hvad er - hvor ser jeg det?
Avatar billede soerenlyn Nybegynder
07. august 2007 - 13:54 #5
Har fundet den - fejlkonsolen siger ingenting.
Avatar billede olebole Juniormester
07. august 2007 - 14:54 #6
<ole>

FF har ifølge min viden ingen problemer med status. Hvad mener du helt præcist med:
    "Denne kode virker i IE, men ikke i helt i Firefox"?

"Jeg har fået at vide at status=200 er hvad den skal gøre når den har udført asp-siden" >> Det er ikke umiddelbart korrekt.
Request-objektets status sættes til 200, så snart dokumentet er fundet - uanset, om ASP skriver noget til dokumentet ud eller ej

/mvh
</bole>
Avatar billede soerenlyn Nybegynder
07. august 2007 - 15:06 #7
Okay.. Det jeg mente var:

Når jeg kalder min AjaxLoad("aspside.asp','div-id') sætter jeg div-elementet's innerHTML til at være "loader..."

Når status=200 burde den så sætte div-elementet's innerHTML til at være req.responseText.


Dette gør den i IE, men ikke i FF.
Avatar billede olebole Juniormester
07. august 2007 - 15:35 #8
- nej
Avatar billede soerenlyn Nybegynder
07. august 2007 - 15:38 #9
Hvordan retter jeg så dette? :)
Avatar billede olebole Juniormester
07. august 2007 - 15:43 #10
Når readyState er 4, er data tilgængelige ... så kan du bruge dem.

- men hvad gør du med innerHTML i AJAX? Hvad gør du i det hele taget med innerHTML i 2007? innerHTML er 90'er slam på niveau med font-elementer, nestede tabelhelveder og sites opbygget i 18-20 nestede frames  :)
Avatar billede soerenlyn Nybegynder
07. august 2007 - 15:45 #11
Hvad skal jeg så i stedet for innerHTML?

document.getElementById(b).childNodes[0].nodeValue?
document.getElementById(b).contentText?
Avatar billede soerenlyn Nybegynder
07. august 2007 - 15:47 #12
Nu har jeg ændret
  if(req.readyState==4&&req.status==200){
til
  if(req.readyState==4){

Dette går ingen forskel i FF.
Avatar billede erikjacobsen Ekspert
07. august 2007 - 15:47 #13
Du skal bare beholde innerHTML til du har fået det andet til at virke. Derefter kan du tænke fremad. Men jeg har ikke haft tid til at teste det - jeg ikke umiddelbart se noget galt.
Avatar billede soerenlyn Nybegynder
07. august 2007 - 16:07 #14
Ja det gør jeg også. Jeg forstår bare ikke hvorfor FF ikke får at vide at asp-siden er loadet, men IE gør.
Avatar billede soerenlyn Nybegynder
07. august 2007 - 16:24 #15
Det må jo være linjen: 'if(req.readyState==4&&req.status==200)' der laver problemet.
Avatar billede soerenlyn Nybegynder
07. august 2007 - 16:55 #16
Jeg har selv løst det, og fejl lå i at
      req.onReadyStateChange=function(){
skulle være
      req.onreadystatechange=function(){

Ellers tak for hjælpen :)
Avatar billede erikjacobsen Ekspert
07. august 2007 - 17:10 #17
Ja, ok, så vil den jo slet ikke blive udløst. Det er også det, der står i min kode, kan jeg se nu ;)
Avatar billede olebole Juniormester
07. august 2007 - 17:45 #18
- den overså jeg da også  =)
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