Gå til innhold

XMLHttpRequest: responseText er blank!


Anbefalte innlegg

Hallo! Jeg har følgende javascript-funksjoner:

 

function getXMLHTTPRequest(){
var req = null;
try{// Firefox, Opera 8.0+, Safari
 req = new XMLHttpRequest();
}catch (e){// Internet Explorer
 try{
 	req = new ActiveXObject("Msxml2.XMLHTTP");
 }catch (e){
 	req = new ActiveXObject("Microsoft.XMLHTTP");
 }
}
if (req == null){
 alert("Nettleseren din støtter ikke Ajax.");
}
return req;
}

function postEvent(ID, dayOfMonth, dtStart, dtEnd, strSubject, strBody){
var sReq = getXMLHTTPRequest();
var rnd = parseInt(Math.random()*999999999999999);
sReq.open("GET", "inc/ajax.asp?f=postEvent&ID=" + ID + "&dtStart=" + dtStart + "&dtEnd=" + dtEnd + "&strSubject=" + strSubject + "&strBody=" + strBody + "&rnd=" + rnd, true);
sReq.onreadystatechange = function(){
 if(sReq.readyState == 4){
 	parent.document.getElementById("Events_" + dayOfMonth).innerHTML = sReq.responseText;
 }
}
sReq.send(null);
}

 

Dette virker for så vidt, og <SPAN id="Events_1"></SPAN> (f.eks.) blir oppdatert med sReq.responseText. Problemet er at sReq.responseText ikke inneholder noenting! Jeg vet med sikkerhet at serverscriptet ajax.asp virker som det skal, for jeg kan teste det ved å sende URL-en i et browservindu, og da vises den informasjonen jeg forventer.

 

Hva gjør jeg galt?

 

 

Stian

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+142

Prøv å erstatt

sReq.open("GET", "inc/ajax.asp?f=postEvent&ID=" + ID + "&dtStart=" + dtStart + "&dtEnd=" + dtEnd + "&strSubject=" + strSubject + "&strBody=" + strBody + "&rnd=" + rnd, true);

med

var ajax_url = "inc/ajax.asp?f=postEvent&ID=" + ID + "&dtStart=" + dtStart + "&dtEnd=" + dtEnd + "&strSubject=" + strSubject + "&strBody=" + strBody + "&rnd=" + rnd;
alert(ajax_url);
sReq.open("GET", ajax_url, true);

 

Sjekk at alert(ajax_url) viser den url-en du vil den skal vise :)

Lenke til kommentar

Jeg ser at du har:

if ( sReq.readyState == 4 ) {
 parent.document.getElementById("Events_" + dayOfMonth).innerHTML = sReq.responseText;
}

 

Prøv å sett inn slik at det blir:

if ( sReq.readyState == 4 ) {
 if ( sReq.status === 200 ) {
   // Alt OK i fra server
   parent.document.getElementById("Events_" + dayOfMonth).innerHTML = sReq.responseText;
 } else {
   // Fikk en feil i fra server, f.eks. statuskode 404 eller liknende
   alert("Fikk feilkode i fra server: "+sReq.status+", "+sReq.statusText);
 }
}

 

Da vil du få vite litt mer om svaret fra serveren, hvis noe feilet. 404 betyr f.eks. at dokumentet ikke fantes, altså feil i URL.

 

En ting til:

Koden din er: parent.document.getElementById([...] .. hvor kommer parent fra?

det holder med document.getElementById :-)

 

...Og enda en ting:

Funksjonen din heter postEvent, det ser ut som noe sendes til lagring på server(?), og da er det mer riktig å sende data via POST, enn å bruke GET. Men det er jo ikke såå viktig, kanskje ;-)

Endret av luxus
Lenke til kommentar
Jeg ser at du har:

if ( sReq.readyState == 4 ) {
 parent.document.getElementById("Events_" + dayOfMonth).innerHTML = sReq.responseText;
}

 

Prøv å sett inn slik at det blir:

if ( sReq.readyState == 4 ) {
 if ( sReq.status === 200 ) {
   // Alt OK i fra server
   parent.document.getElementById("Events_" + dayOfMonth).innerHTML = sReq.responseText;
 } else {
   // Fikk en feil i fra server, f.eks. statuskode 404 eller liknende
   alert("Fikk feilkode i fra server: "+sReq.status+", "+sReq.statusText);
 }
}

 

Da vil du få vite litt mer om svaret fra serveren, hvis noe feilet. 404 betyr f.eks. at dokumentet ikke fantes, altså feil i URL.

 

En ting til:

Koden din er:  parent.document.getElementById([...]  .. hvor kommer parent fra?

det holder med document.getElementById :-)

 

...Og enda en ting:

Funksjonen din heter postEvent, det ser ut som noe sendes til lagring på server(?), og da er det mer riktig å sende data via POST, enn å bruke GET. Men det er jo ikke såå viktig, kanskje ;-)

9363480[/snapback]

 

Prøvde å sjekke om status == 200, men får bare feilmelding (bruker FF-pluginen Firebug): Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"

 

Jeg bruker parent fordi scriptet kjøres i en <IFRAME> og skal oppdatere en <SPAN> i hoveddokumentet.

 

Sender data til serveren for lagring i databasen, ja. Prøvde POST i stedet for GET, men kunne ikke merke noen forskjell. :) Dataene blir lagret i begge tilfellene.

 

Nå fikk jeg det forresten til å virke! På en måte. Dataene editeres og postes fra en <IFRAME> som sagt (dette er en slags popup), og oppdaterer parent.document. Når brukeren vil sende dataene klikker han på en BUTTON med onclick='postEvent(blablabla...)'. I tillegg til postEvent er også funksjonen for å fjerne <IFRAME>-en i onclick-en. Slik: onclick='postEvent(blablabla);window.top.hidePopWin;'. Når jeg fjernet hidePopWin ble responseText plutselig fylt med riktig data, og <SPAN id='Events_1'></SPAN> ble oppdatert. Men nå står altså <IFRAME>-en framme, og det skal den ikke.

 

Forslag?

 

Hah! Jeg fant det ut! :D Ved å flytte window.top.hidePopWin(); inn i postEvent-funksjonen etter parent.document.getElementById("Events_" + dayOfMonth).innerHTML = sReq.responseText; så løste det seg. :D

 

:D:D:D

 

Takk, takk. Det var godt å få snakket om dette. Hehe...

 

-s

Endret av stiansa
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...