webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > Javascript

Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2012-08-06, 07:00   #1
Hulth
Medlem
 
Registrerad: 2001-06-21
Ort: Vetlanda
Inlägg: 274
Lösningar: 5
ledsen Skicka med id på div-tagg som ska uppdateras

Tjo!

Såhär ser min nuvarande kod ut, och den funkar, men jag vill kunna skicka med ytterliggare en parameter i sndReq för att ange vilken div-id som utdatan ska skrivas till.

Anropas med: sndReq('hej.asp?foo=bar')
Kod:
function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
			ro = new XMLHttpRequest();
	}
	return ro;
}

var http = createRequestObject();

function sndReq(theURL) {
	document.getElementById('ajax_response').innerHTML = "<div align='center'><img src='ajax-loader.gif'><br>Hämtar data...</div>"
	http.open('get', theURL);
	http.send(null);
	http.onreadystatechange = handleResponse;
}

function handleResponse() {
	if(http.readyState == 4 && http.status==200) {
		document.getElementById('ajax_response').innerHTML = http.responseText;
	}
}
Jag tänkte ju att det här blir enkelt att fixa, är ju bara att skicka med en variabel till, right? Nej, följande kod "fastnar" på readystate 1

(Diff mot ovanstående kod med fetstil)

Anropas med: sndReq('hej.asp?foo=bar','ajax_response')
Kod:
function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
			ro = new XMLHttpRequest();
	}
	return ro;
}

var http = createRequestObject();

function sndReq(theURL,theDiv) {
	document.getElementById(theDiv).innerHTML = "<div align='center'><img src='ajax-loader.gif'><br>Hämtar data...</div>"
	http.open('get', theURL);
	http.send(null);
	http.onreadystatechange = handleResponse(theDiv);
}

function handleResponse(theDiv) {
	if(http.readyState == 4 && http.status==200) {
		document.getElementById(theDiv).innerHTML = http.responseText;
	}
}
Jag har en svag känsla om att det är något löjligt enkelt jag missat, så det här öppna målet bjuder jag på
__________________
Man misslyckas aldrig förrän man slutar försöka...
Hulth besöker inte forumet just nu   Svara med citat
Äldre 2012-08-06, 07:15 Markerad som löst av Hulth   #2
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 496
Lösningar: 535
Kod:
	http.onreadystatechange = function() {
		handleResponse(theDiv);
	}
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker forumet just nu   Svara med citat
Äldre 2012-08-06, 07:24   #3
Hulth
Medlem
 
Registrerad: 2001-06-21
Ort: Vetlanda
Inlägg: 274
Lösningar: 5
Citat:
Hulth skrev: Visa inlägg
Jag har en svag känsla om att det är något löjligt enkelt jag missat
Tack! Funkar klockrent

För förståelsens skull, varför behöver man ange att det är en funktion som anropas, borde tyckas att det känns givet i och med att man skickar med variablar till den?
__________________
Man misslyckas aldrig förrän man slutar försöka...
Hulth besöker inte forumet just nu   Svara med citat
Äldre 2012-08-06, 07:30   #4
voigtann1
Forumvärd
 
voigtann1s avatar
 
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 496
Lösningar: 535
alla event du binder skall du binda funktioner till, men när du skriver:
Kod:
http.onreadystatechange = handleResponse(theDiv);
så kommer handeResponse köras direkt så fort JS läser in all JS kod, vilket du inte vill du vill att funktionen skall köras när eventet readystatechange triggas.
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck
voigtann1 besöker forumet just nu   Svara med citat
Äldre 2012-08-06, 07:33   #5
Hulth
Medlem
 
Registrerad: 2001-06-21
Ort: Vetlanda
Inlägg: 274
Lösningar: 5
Aha

Då har man lärt sig något nytt denna dagen också, tack igen
__________________
Man misslyckas aldrig förrän man slutar försöka...
Hulth besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > Javascript

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 10:21.


Powered by: vBulletin Version 3.8.6
Copyright © webForum