webForumDet fria alternativet

AJAX: Hämta data automagiskt!

2 svar · 484 visningar · startad av oskars

oskarsMedlem sedan nov. 20051 317 inlägg
#1

Tjohoo!

Jag sitter här och brökar med Ajax. Det är väldigt vackert, AJAX. Jag har en funktion som låter mig hämta data med ett formulär från databasen, utan att sidan behöver uppdateras... Jag sitter här och funderar på hur jag ska kunna modda om det så att jag inte behöver använda ett formulär för att få datan, utan istället bara välja vilken data från databasen direkt i koden.

T.ex att Ajax ska ligga och bevaka COUNT(*) AS Antal WHERE Namn = "Oskar". Och när antalet Oskar stiger eller sjunker så ska siffran jag fått fram med Ajax uppdateras direkt utan uppdatering av själva sidan.

Så här är min kod:

<html>
<head>
<script language="javascript" type="text/javascript" src="javascript.js"></script>
</head>

<body>
<form name="input">
	<input name="customer" id="customer" type="text" onkeyup="findCustomer(this.value);" />
	
</form>
	<div id="minDiv"></div>

</body>
</html>
function makeRequest(url) {

var http_request = false;

if (window.XMLHttpRequest) {
	http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
	http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {

try {
	http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
	http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}

}

if (!http_request) {
	alert('Gick ej...');
	return false;
}

http_request.onreadystatechange = function() { alertContents(http_request); };
http_request.open('GET', url, true);
http_request.send(null);

}

function alertContents(http_request) {

if (http_request.readyState == 4) {
if (http_request.status == 200) {
	document.getElementById('minDiv').innerHTML = http_request.responseText;
} else {
	document.getElementById('minDiv').innerHTML = "";
}
}

}

function findCustomer(str) {
	str = parseInt(str)
	makeRequest('sida.asp?namn=Oskar')	
}

Jag antar att jag ska försöka ändra "GET"-funktionerna i javascriptet, men vet inte vad jag ska använda mig av istället :l Har läst Ajax-artiklar, men jag har nog inte hittat det som jag söker tror jag.

Tänk er att jag vill göra så här liksom:


Do Until RecSet.EOF

Response.Write RecSet("Namn") & ": " & RecSet("Antal") "st."

RecSet.MoveNext
Loop

Där ska RecSet("Antal") uppdateras automagiskt, med hjälp av Ajax.

Jag har försökt med en sorts uppdateringsfunktion (refresh) med hjälp av Javascript, men det verkar bli alldeles fel, och för primitivt!

Vet någon av er hur jag ska modda om mitt script, eller är jag ute och cyklar?

Ha en bra dag!

Mvh
Oskar

PalleMedlem sedan apr. 20003 174 inlägg
#2

En variant är att anropa makeRequest direkt när sidan laddas, och sedan använda en Timer som kör funktionen igen med X antal sekunders mellanrum.

oskarsMedlem sedan nov. 20051 317 inlägg
#3

Okej! Tack! Kommer inte den timern göra så att databasen belastas ganska mkt om man t.ex sätter den på 5sec och sen är det 10st såna timers?

Kan man inte göra så att den uppdaterar siffran så fort som databasen uppdateras?

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)