Panelen



Forumnavigering
Senast inloggade
RSS
Sponsorer

Forum > Klientspråk > JavaScript

uppdatera enbart diven...

Biasse
Biasse

Gradering

#18237

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

 

ID: #18237 | Skapades: 2009-10-22 19:39:25 | Tråden har 19 svar och har lästs 910 gånger.
Sida: 1 2

voigtan
voigtan

Gradering

#18238

AJAX 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

 

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #18238 | Skapades: 2009-10-22 21:06:16

Biasse
Biasse

Gradering

#18239

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%>
ID: #18239 | Skapades: 2009-10-22 21:14:37

voigtan
voigtan

Gradering

#18240

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.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #18240 | Skapades: 2009-10-22 21:20:34

Biasse
Biasse

Gradering

#18241

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.

ID: #18241 | Skapades: 2009-10-22 21:24:07

voigtan
voigtan

Gradering

#18242

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
%>
Så den kommer visar datumet varje 60000ms 10000ms

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 22 oktober 2009. Läs tidigare inlägg.
Redigerades av voigtan den 22 oktober 2009. Läs tidigare inlägg.
ID: #18242 | Skapades: 2009-10-22 21:31:09

Biasse
Biasse

Gradering

#18243

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.

ID: #18243 | Skapades: 2009-10-22 22:09:27

voigtan
voigtan

Gradering

#18244

Citerar voigtan:
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

Gäller fortfarande i mina ögon. punkt 2 är det "enklaste" altenativet för dig skulle jag gissa på. Skriptet fungera som det skall (AJAX) det är din sida som hämtas som är problemet.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #18244 | Skapades: 2009-10-22 22:13:05

Biasse
Biasse

Gradering

#18245

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 &"")
Då får jag fel: Ett fel uppstod vid anrope Skriver jag bara TEST så fungerar det? Asp koden är rätt och fungerar på ask_index.asp

ID: #18245 | Skapades: 2009-10-22 22:26:52

voigtan
voigtan

Gradering

#18246

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)?

 

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #18246 | Skapades: 2009-10-22 22:31:13

Biasse
Biasse

Gradering

#18247

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.

ID: #18247 | Skapades: 2009-10-22 22:41:12

voigtan
voigtan

Gradering

#18248

Citat:
Aspkoden fungerar och det är inget fel på den när den ligger på indexsidan.
Nej, den fungera inte, eftersom du inte får en korrekt Statuskod och state från Servern. Det är fortfarande inget fel med din javascript kod, det är din ASP kod. Om du flyttar ASP kod från ett dokument till ett annat så måste du ju se till att du har inkluderat och tagit med rätt koder till nästa dokument, vilket jag kan nog garantera att du har glömt. Gå till din sida som du har skapat nu för att genera listan dvs du går till den direkt via addressfältet, eller så publisera du din kod och ge oss länkar så bli detta mycket, mycket enklare att felsöka för dig.

Citat:
Felmedelandet jag får är: Ett fel uppstod vid anropet
Nej, det är inte felmeddelande, det är ditt felmeddelande pga att XML anropet bli en korrekt status.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
Redigerades av voigtan den 22 oktober 2009. Läs tidigare inlägg.
ID: #18248 | Skapades: 2009-10-22 23:00:46

Biasse
Biasse

Gradering

#18249

Jag fick det att fungera nu..    Tack för hjälpen :)

ID: #18249 | Skapades: 2009-10-23 14:31:47

voigtan
voigtan

Gradering

#18250

Vad var felet? Underlättar om du kan beskriva vad problemet var så kan andra ta lärdom också.

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #18250 | Skapades: 2009-10-23 18:09:40

Biasse
Biasse

Gradering

#18251

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 :)

ID: #18251 | Skapades: 2009-10-23 19:22:28

voigtan
voigtan

Gradering

#18252

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 ;)

Hur man ställer en fråga: http://support.microsoft.com/kb/q555375
ID: #18252 | Skapades: 2009-10-23 22:52:43
Sida: 1 2
© Copyright 2007-2009 Shadi Domat | Version 3.0 | Sidkarta | Policy