Gå til innhold

AJAX: xmlHttpRequest.status gir 0


Anbefalte innlegg

Holder på å lære meg Ajax, men så har det plutselig skjedd noe. Alt har fungert fint helt til xmlHttpRequest.status har begynt å gi 0, over alt. Lokalt, på nett, i forskjellige browsere osv, helt sånn plutselig.

 

Hvor er det egentlig feilen ligger? Koden er jo nøyaktig den samme som fungerte i går.

var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject() {
	var xmlHttp;

	if (window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	} else {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}

	return xmlHttp;
}

function process() {
	if (xmlHttp) {
		try {
			xmlHttp.open("GET", "list.php", true);
			xmlHttp.onreadystatechange = handleStateChange;
			xmlHttp.send(null);
		} catch (e) {
			alert("1: " + xmlHttp.readyState + " - " + xmlHttp.status);
		}
	}
}

function handleStateChange() {
	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			try {
				handleResponse();
			} catch (e) {
				alert("2: " + xmlHttp.readyState + " - " + xmlHttp.status);
			}
		} else {
			alert("3: " + xmlHttp.readyState + " - " + xmlHttp.status);
		}
	}
}

function handleResponse() {
	var xmlResponse = xmlHttp.responseXML;
	root = xmlResponse.documentElement;
	response = root.getElementsByTagName("response");

	var stuff = "";
	for (var i = 0; i < response.length; i++) {
		stuff += " FDSGDSRHGKJFLADSAEGFHSDFJKLSDNGJKLSDNGDSJKNGFSDJKNGFSDKJFNSDKJ ";
	}

	suggestions = document.getElementById("suggestions");
	suggestions.innerHTML = stuff;
}
Lenke til kommentar
Videoannonse
Annonse

Gadd aldri å ta meg tiden til å lære meg AJAX "the hard way". Vet ikke hva du er ute etter, eller om du MÅ skrive det i ren javascript, men anbefaler deg likevel å se på jQuery sin .ajax funksjon. Å hente noe produsert fra en php fil kan f.eks skrives så enkelt som det her:

(function($) {
    $(document).ready(function() {
        $.ajax({ 
            url: 'php/get_something.php',
            data: '',
            type: 'get',
            success: function(output) {
                $('#mydiv').html(output);
            }
        });
    });
})(jQuery);
  • Liker 2
Lenke til kommentar

Du får statuskode 0 når det feiler før forespørselen har kommet ut fra klientsiden. Er dette skriptet og list.php-filen under samme domene? Med standard sikkerhetsinnstillinger kan du ikke kjøre cross-domain requests i JS, så da vil du få en sikkerhetsfeil lokalt, og status 0 hvis ikke domenet matcher nøyaktig. Hvis du vil teste det fra localhost finnes det noen workarounds som kan settes i innstillingene til nettleseren, men disse er forskjellige fra nettleser til nettleser så da må du neste google det for den du bruker.

Lenke til kommentar

Du finner forklaringen om du åpner utviklerkonsollen i nettleseren din. Det er et enormt kraftig verktøy. Der finner du mer informasjon om state 0.

 

HTTP/500 betyr at tjeneren ikke returnerte ressursen du ba om på grunn av en intern feil.

Lenke til kommentar

Nå er det dog en stund siden jeg har utført AJAX kall utenfor jQuery rammeverket.

 

Hvorfor har du null value som send parameter i process funksjonen?

Har du prøvd med en absolute path til php scriptet?

 

Jeg ser heller ikke hvor du kaller process() i den koden, men regner med at du har kallet ett eller annet sted utenfor kodebiten du har postet.

 

Men som Aeyoun sier: bruk utviklingsverktøyet i netleseren for alt det er verdt, jeg personlig foretrekker chromes devtools.

Endret av tvbord
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...