Avatar billede ihtezaz Praktikant
17. februar 2006 - 12:01 Der er 34 kommentarer og
1 løsning

Hvordan sender jeg parameter med min script, henter tid serversid

Hej


Jeg har en aspx side, kaldet "ActiveAuction.aspx", siden viser viser en igangværende auktion, og derfor henter den tid serverside og sub den tid, auktionen slutter. Tiden bliver hentet fra min Handler1.aspx side, via denne script på min ActiveAuction.aspx side:


<script language="javascript" type="text/javascript">
         
    function updateTime()
    {
        var targetUrl = "admin/Handler1.aspx";
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       
        xmlHttp.open( "POST", targetUrl, false);
        xmlHttp.send();       
       
        var res = xmlHttp.responseText;   
        var times = xmlHttp.responseText.split('|');
   
       
        for(i=0;i<auctionFields.length;i++)
        {
        //    window.status = "[" + auctionFields[i] + "|" + times[0] + "]";
            document.getElementById(auctionFields[0]).innerText = times[0];   
        }
             
        setTimeout("updateTime()", 1000);                       
    }
</script>




Det problem jeg har, er at min Handler1.aspx side udregner tid for samtlige aktive auctioner, så min script skal kunne sende en auctionID, så den kun modtager den auctionID som brugeren er inde at kigge.
Avatar billede snepnet Nybegynder
18. februar 2006 - 00:41 #1
lav funktionen om, således at den tager id'et som parameter.
function updateTime(auctionId)

brug derefter parameteren som en querystringvariabel på kaldet:
var targetUrl = "admin/Handler1.aspx?auctionId=" + autionId;

og sæt så tiden pr. id.... eller benyt evt to parametre
function updateTime(auctionId, targetId)

hvor targetid så er det du kan bruge i getElementById(...

mvh
Avatar billede ihtezaz Praktikant
18. februar 2006 - 01:40 #2
tak snepnet, jeg prøver det lige og vender tilbage.
Avatar billede ihtezaz Praktikant
18. februar 2006 - 02:19 #3
hej igen snepnet

Jeg tror jeg har brug for mere asisstance, jeg er meget dårlig til scripting.

jeg har nu ændret min script til følgende:

<script language="javascript" type="text/javascript">
         
    function updateTime(auctionID)
    {
        var targetUrl = "admin/Handler1.aspx?auctionID="+auctionID;
        var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       
        xmlHttp.open( "POST", targetUrl, false);
        xmlHttp.send();       
       
        var res = xmlHttp.responseText;   
        var times = xmlHttp.responseText.split('|');
   
       
        for(i=0;i<auctionFields.length;i++)
        {
        //    window.status = "[" + auctionFields[i] + "|" + times[0] + "]";
            document.getElementById(auctionFields[0]).innerText = times[0];   
        }
             
        setTimeout("updateTime()", 1000);                       
    }
        </script>

Hvad er det lige jeg mangler at ændre ?


og metoden der returner tiden i min Handler1.aspx, ser sådan ud,

        public void ProcessRequest(HttpContext context)
        {
       
            StringBuilder strbResponse = new StringBuilder();
       
            foreach(Business.Auction auction in AuctionServer.Auctions) // auctionServer.FindAndReturnAuction(auctionID);
            {
                strbResponse.Append(string.Format("Tid tilbage:                {0}d {1}tim. {2}min. {3}sek.",auction.TimeLeft.Days,auction.TimeLeft.Hours,auction.TimeLeft.Minutes,auction.TimeLeft.Seconds));           
           
            }
            context.Response.Write(strbResponse.ToString());
            }

Hvorved jeg får tider for alle active auctioner på den enkelte auction, ved ikke helt hvordan jeg skal tilrette den, så hvert enkelt auction kun får dens egen tid.
Avatar billede snepnet Nybegynder
18. februar 2006 - 14:54 #4
du kan i din handler hive parameteren ud af querystring:

int auctionId = int.Parse(Request.QueryString["auctionId"]);

og du må så hente tiden for den auktion alene - som du så returnerer.

i scriptet på din form, skal du så kun have én værdi tilbage - og sørge for at sætte den på det html-element du bruger til det.

mvh
Avatar billede ihtezaz Praktikant
18. februar 2006 - 16:00 #5
hej igen snepnet, hvis jeg skal levere auctionID til min script, gør så det i code behind således : body.Attributes.Add("onload", "updateTime("+auctionID+");");
Det ser bare ikke ud til at min handler kan hente auctionID fra querystringen.
Avatar billede snepnet Nybegynder
25. februar 2006 - 12:49 #6
hej - og undskyld jeg ikke har været her... har været netløs.
hvordan ser din kode ud i handleren - og kan de se at du får oplysningen på din querystring?
(du kan evt. bare lave en alert(targetUrl) i scriptet - så du kan se hvad du ender med).
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 15:46 #7
Det gør ikke noget, det er nok at du vil hjælpe mig.

Jeg har prøvet med alert i min script, og jeg får hele querystringen ud med auctions id'en.


"ProcessRequest" metoden på min handler, ser sådan ud:

    public void ProcessRequest(HttpContext context)
        {
       
            StringBuilder strbResponse = new StringBuilder();
       
            int auctionID = int.Parse(Request.QueryString["auctionId"]);
            Business.AuctionServer auctionServer = new AuctionServer();
            Business.Auction auction = auctionServer.FindAndReturnAuction(auctionID);
            strbResponse.Append(string.Format("Tid tilbage:                {0}d {1}tim. {2}min. {3}sek.",auction.TimeLeft.Days,auction.TimeLeft.Hours,auction.TimeLeft.Minutes,auction.TimeLeft.Seconds));           
            context.Response.Write(strbResponse.ToString());
        }
Avatar billede snepnet Nybegynder
26. februar 2006 - 15:49 #8
hej igen :o)

sæt et breakpoint på denne linie:
int auctionID = int.Parse(Request.QueryString["auctionId"]);

og se hvad der sker når du stepper ned igennem.

mvh
Avatar billede snepnet Nybegynder
26. februar 2006 - 15:55 #9
(du må også gerne lige sende den string du får fra alert'en)
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 15:59 #10
Når jeg gør det, så når den lige at komme i breakpointen, når jeg så stepper frem, går den tilbage til siden med min script, hvor der nu i alert står "undefined" hvor auctionid burd stå.
Avatar billede snepnet Nybegynder
26. februar 2006 - 16:06 #11
send lige det link du får genereret (altså det du kalder din handler med) - der sker sikkert bare en fejl i koden... du kan evt. pakke det ind i en try/catch
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 16:30 #12
Ok, nu har jeg prøvet at kapsle min kode i handleren i try/catch og exeption er "anmodning er ikke tilgænglig i denne contex"
Avatar billede ihtezaz Praktikant
26. februar 2006 - 16:34 #13
Nu tror jeg, det lykkeds jeg har brugt request object på den tilgængelige context. vender lige tilbage efter lille test.
Avatar billede ihtezaz Praktikant
26. februar 2006 - 16:42 #14
Nu er der kun en lille fejl, det er at efter den første gang når jeg går fra min script til handleren har jeg en querystring med auctionID, men efterfølgende gange får querystringen ingen auctionid fra scriptet. første gang jeg ActiveAuction.aspx vises, lægger jeg auctionid i en hidden text felt, derfra kunne vi med fordel trække id ud og sætte på querystringen i scriptet, men hvordan tilgår jeg lige min textbox i scriptet ?
Avatar billede snepnet Nybegynder
26. februar 2006 - 16:50 #15
uf ja ... det kan jeg godt se - scriptet kalder jo sig selv.... hmmm...
altså... scenariet er stadig at du har en række auktioner på din side - hvis respektive ure skal skifte kontinuerligt - uden postback - ikke?
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 16:51 #16
ja helt korrekt
Avatar billede ihtezaz Praktikant
26. februar 2006 - 16:53 #17
hov.. nej ikke helt rigtig, jeg har kun en auktion pr side.
Avatar billede snepnet Nybegynder
26. februar 2006 - 21:02 #18
aha ... det er jo en anden sag.
der er to ting du skal have adgang til fra din javascript-funktion.
det ene er dit auktionsid, og det andet er den kontrol der skal modtage resultatet fra din handler.
hvis du kun har en enkelt auktion pr. side kan du næsten lave det som du har lyst til.... egentlig kan du jo bare generere scriptet fra din kode - og så klaske de respektive id's ind i det.
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 21:17 #19
Jep, auktionsid'en har jeg i en textbox, hvordan får jeg lige text ud af den i scriptet ? jeg er ringe til javascript.
Avatar billede ihtezaz Praktikant
26. februar 2006 - 21:18 #20
Det kunne være rart hvis jeg kunne genere scriptet i code behind, men det skal jeg lige have lidt hjælp til.
Avatar billede snepnet Nybegynder
26. februar 2006 - 21:46 #21
du har et kald i dit script... getElementById(...) - den kan du bruge til at få fat i hvad som helst (hvis du har id'et).
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 21:49 #22
jeg har prøvet sådan her: var auctionID = document.getElementById(txtAuctionID).innerText , men ser ikke ud til at fungere
Avatar billede snepnet Nybegynder
26. februar 2006 - 21:53 #23
hvad siger den til document.getElementById('txtAuctionID').value?
Avatar billede snepnet Nybegynder
26. februar 2006 - 21:54 #24
vås ... document.getElementById('<dit auctionid>').value
Avatar billede ihtezaz Praktikant
26. februar 2006 - 22:00 #25
er det ikke id på min textfelt der indeholder auctionid der skal stå i paranteserne mellem < og >, det ser ikke ud til at virke.
Avatar billede snepnet Nybegynder
26. februar 2006 - 22:00 #26
jo - men <> skal ikke være der
Avatar billede snepnet Nybegynder
26. februar 2006 - 22:01 #27
det skal være som document.getElementById('ctrl1_txtAutionId').value - eller hvad det nu hedder i html'en.
mvh
Avatar billede snepnet Nybegynder
26. februar 2006 - 22:06 #28
nå - jeg smutter ... jeg er først tilbage imorgen :o)
vi ses
mvh
Avatar billede ihtezaz Praktikant
26. februar 2006 - 22:06 #29
Det ser ikke ud til at virke, value metoden ser ikke ud til at findes, men innerText virker heller ikke. det var mærkeligt.
Avatar billede ihtezaz Praktikant
26. februar 2006 - 22:07 #30
ok jeg takker snepnet. prøver lidt endnu og vender tilbage imorgen,hvis ikke det fungere.
Avatar billede ihtezaz Praktikant
26. februar 2006 - 23:05 #31
Super, nu rykker det.. Det var fordi jeg skulle bruge en html textbox component kørt som serverside, for at bruge value. Jeg skal lige høre, er det perfomance tungt at bruge querystring frem og tilbage mellem script siden og handleren ?

Takker mange gange den god snepnet. læg et svar. :)
Avatar billede ihtezaz Praktikant
27. februar 2006 - 00:27 #32
hej igen snepnet, jeg er begyndt at få denne fejl meddelse, når jeg logger ind på min auktion eller trykker på en vilkårlig knap:


Serverfejl i programmet '/Auction'.
--------------------------------------------------------------------------------

Objektreferencen er ikke indstillet til en forekomst af et objekt.
Beskrivelse: Der opstod en ikke-afviklet undtagelse under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.

Kildefejl:

Der blev oprettet en ikke-afviklet undtagelse under kørsel af den aktuelle webanmodning. Du kan finde oplysninger om undtagelsens oprindelse og placering ved hjælp af nedenstående staksporing af undtagelser. 

Staksporing:


[NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.]
  System.Web.UI.Control.OnBubbleEvent(Object source, EventArgs args)
  System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e)
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
  System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
  System.Web.UI.Page.ProcessRequestMain()



Hvad kunne det skyldes ?
Avatar billede ihtezaz Praktikant
27. februar 2006 - 00:53 #33
Du behøver ikke tænke over den sidste spørgsmål snepnet, jeg havde fejl i min login, takker igen, og beklager alle de unødvendige spørgsmål. husk at smide et svar.
Avatar billede snepnet Nybegynder
27. februar 2006 - 09:14 #34
ingen grund til beklagelser - og nej... det med querystring og performance tror jeg ikke du skal bekymre dig om.
mvh
Avatar billede ihtezaz Praktikant
27. februar 2006 - 14:22 #35
En sidste ting den god snepnet. I Application_AuthenticateRequest i min gloabal.asax har jeg kode til  at tjekke om brugeren er logget ind, og hvis ikke så tildel vedkommende en rolle, denne metode køres ved ethvert redirect og dermed også hvert sekund hvor min script kalder handleren. Jeg tror det var det der gav server fejlen, hvordan kunne man forhindre at denne metode køre sammen med uret ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester