Forum > Klientspråk > JavaScript
Jag försöker uppdatera info i en div men hela sida läses in så det blir 2st sidor efter varann på höjden. Vad är det som kan vara fel i koden?
http://www.aspkoll.se/code/Index.asp?id=573
| Skriv utAJAX hämtar ut allt som genereas ifrån "ask_index.asp" filen. Hämtar AJAX anropet för mycket så får du antingen:
1. Formatera datan som kommer tillbaka och filtera ut datan som kommer ifrån dokumentet
2. Skapar en ny ASP sida som generera endast den information du vill presentera
3. Bygg in en flagga i din ask_index.asp, exempelvis en querystring, om den finns så skall den generea bara lite av datan än hela ask_index.asp
Har provat detta men får scriptfel
var interval = setInterval("makeRequest('ask_index.asp?action=check&rnd='+Math.random(),'online_time')",1000);
<%If Request("action") = "check" Then%>
<div id="online_time">Info som ska laddas om varje minut</div>
<%End If%>
Vad för skript fel? ASP, javascript?Sen verkar det ju som att du har bygt om makeRequest funktionen eftersom den bara har en in-parameter i din funktion du har bifogat, vill du ha ett korrekt svar så måste du nog ge någon typ av länk så man ser vad du egentligen får och vad du egentligen vill få ut.
Jag har alldrig haft med ajax att göra förr utan hittade detta script när jag sökte runt. Kan du visa hur det ska se ut för att ge korrekt svar? Det är en div innehållande onlinelista samt update av online tid som ska finnas i den.
Det är inget fel med den kod du bifogade i ditt första inlägg, AJAX anropet är korrekt och fungera för mig utan några problem, men eftersom du beskriver ditt problem rätt luddigt så får jag ställa frågor för att reda ut en saker:
Vad generera AJAX anropet till "ask_index.asp" ? kom ihåg att det bara är det du vill ha i din div som ask_index.asp skall generera. Men som sagt, för att verkligen förstå ditt problem så är en live demo det bästa man kan komma med. Eftersom jag inte har någon aning om i "vad som genereras två gånger", du har bara ett HTML element i ditt kod exempel, vilket inte egentligen har något med problemet att göra.
Redigerad:
Kör en demo:
http://voigt.se/sandbox/aspkoll/biasse/
Där jag egentligen bara har:
<%
If Request.QueryString("action") = "check" Then
Response.Clear
Response.Write(now())
Response.End
End If
%>
Ska försöka förklara tydligt.
Denna div ligger inlagt på alla mina forumsidor. Den uppdaterar en onlinelista och uppdaterar onlinedatum/tid i databasen för varje user varje gång diven uppdateras.
Problemet är att hela ask_index.asp i detta fall uppdateras och lägger sig under befintlig sida. Alltså kan man se 2 kompletta sidor :)
Vitsen är ju såklart att bara diven ska ändras och inte upprepa hela sidan.
2. Skapar en ny ASP sida som generera endast den information du vill presentera
3. Bygg in en flagga i din ask_index.asp, exempelvis en querystring, om den finns så skall den generea bara lite av datan än hela ask_index.asp
Skapade en fil med info
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../database/forum.mdb")
Connect.Execute("UPDATE admin SET online_datum = #"& now() &"# WHERE id = "& userID &"")
Du skriver vad för något? vart?
Det bästa tips jag kan ge till dig om du skall börja med ajax är:
1. Ladda ner Firebug till Firefox och lär dig att använda det, det tar 10-20 minuter att komma igång - Felsökningar bli smärtfritt
2. Innan du kör in filer mot ajax, se till att dom fungera som det skall innan du börja implementera ajaxen vilket gör att felsökningarna bli så mycket enklare.
UserId, var sätter du denna variablen? Är det allt du har i din fil? Vad får du för felmeddelande (script error)?
Koden fungerar som du säger när jag bara skriver text. Men när jag istället flyttar min aspkod till den sida jag anropar i koden så blir det fel. Aspkoden fungerar och det är inget fel på den när den ligger på indexsidan.
userID är det id en user har och kommer från en kaka.
Felmedelandet jag får är: Ett fel uppstod vid anropet
Det gäller detta stycke i koden.
document.getElementById('online_time').innerHTML = http_request.responseText; //hämta texten och visa den i en DIV (info_reload)
} else {
document.getElementById('online_time').innerHTML = "Ett fel uppstod vid anropet"; //...annars så har något gått snett
Ska titta på firebug. Innan jag provadr detta hade jag bara en meta refresh.
Jag fick det att fungera nu.. Tack för hjälpen :)
Vad var felet? Underlättar om du kan beskriva vad problemet var så kan andra ta lärdom också.
Jag hade en includerad sida och trodde den ärvde det som stog där men det fattades:
userID = Clng(Request.Cookies("userID"))Du frågade till o med om det men jag såg inte felet. Nu kan jag uppdatera users tid när dom är inloggade samt köra en kod för att kolla om dom loggat ut utan att trycka på logga ut så dom loggas ut ändå efter 3 min samt updatera min onlinelista.
Jag har som sagt alldrig haft med ajax att göra förr men hej vad smidigt detta var :)
En varning med ajax, som tyvärr har blivit allt mer vanligt, folk missbrukar det, ta det lugnt och tänk dig för när du använder det ;)