webForumDet fria alternativet

Response.flush och uppdaterbar variabel

ASP

6 svar · 825 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Har sökt runt men inte hittat nåt bra sätt att göra detta: har ett script som lägger in produkter i en databas en efter en. Efter t ex var tionde produkt så vill jag att det skrivs ut på skärmen hur många produkter som lagts in. Detta utan att sidan laddas om eller att man redirectas någonstans.
Med Response.Flush så blir det typ så här:

0 produkter inlagda
10 produkter inlagda
20 produkter inlagda
etc...

Jag vill att variabeln som innehåller antalet produkter ska uppdateras och inte skrivas ut igen sas. Hur göra? Krävs AJAX, isf hur göra med AJAX?

Tack! :)

Medlem sedan juni 200032 967 inlägg
#2

Nej, du behöver inte ajax.

<span id="foo">0 produkter inlagda</span>
response.write "<script>document.getElementById("foo").innerHTML='" & ditt_antal & " produkter inlagda';</script>"
response.flush

Typ.

Medlem sedan maj 2001797 inlägg
#3

Fantastiskt! Tack för snabbt svar! :bire

Medlem sedan maj 2001797 inlägg
#4

Kanske borde starta en ny tråd men jag misstänker att mitt nya problem kan ha med detta att göra: När jag kör mitt script - som plockar data från en textfil och lägger in datan i en MySQL-databas - så har jag byggt en enkel räknare mha response buffer, enligt tidigare svar, så man kan se hur långt scriptet körts. Precis när scriptet verkar vara klart så startar det om och körs en gång till! Varför då? Har det med response.buffer eller javascriptet att göra på nåt sätt?
Detta gör i sin tur att jag allt som oftast får felmeddelandet "Script timed out" eftersom det är ganska mycket data och det tar då dubbelt så lång tid som det borde göra. Nån som stött på detta?
Jag använder Firefox i Windows XP och scriptet ligger på en windows-server hos Crystone.

Medlem sedan juni 200032 967 inlägg
#5

Visa all relevant kod.

Medlem sedan maj 2001797 inlägg
#6

Tack för engagemang @nders, men usch vad jobbigt det blev. Det är 400 rader kod (ej medräknat ett antal funktioner som ligger i en annan fil) och jag har svårt att avgöra där vad som är relevant men jag skulle kanske kunna attacha hela filen. Kort bara:
I filen öppnas först en textfil med tabseparerad data, därefter loopas den igenom och en del inserts och ev. updates görs. Sen stängs den textfilen och en ny mycket större öppnas och inserts och updates görs, sist i filen stängs textfilen samt databaskoppling.
Högst upp, efter att ett par filer med funktioner includats, kör jag response.buffer = TRUE och sedan körs response.flush på ca 5-6 ställen i koden - före, i och efter looparna.

Har du någon aning om vad det skulle kunna vara? Om du har hört om nåt liknande förut menar jag, annars kanske jag får attacha hela scriptet som sagt.

Jag har dock märkt följande - det är inte alltid scriptet körs två gånger, men ofta. Och scriptet genererar script timed out-felet även när det bara körts en gång, sen rensas skärmen och scriptet börjar om och timas ut på samma ställe även andra gången.

Medlem sedan juni 200032 967 inlägg
#7

Du har inget mer javascript på sidan som är tänkt att skicka dig iväg någonstans när du är klar?

Startar scriptet bara om när timeouten inträffar (du borde öka timeouten, speciellt med tanke på att timeout inträffar även om scriptet bara körs en gång.)

Annars låter det som att du kanske placerat någon loop fel, eller en if-sats som inte gör sitt, eller det kan vara precis vad som helst.

Av 400 rader i din kod måste det väl ändå vara en del du kan skala bort, som garanterat inte har med detta problem att göra? Jag tror att vi måste se kod för att kunna reda ut problemet.

261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)