|  | 		    
					
        
         
          
         
	
          | |  | Opdatering af flere ens felter i tabel med~ Fra : Leif Neland
 | 
 Dato :  19-09-11 11:40
 | 
 |  | Lidt løst snak...
 
 En tabel, f.ex.. ordrelinier på en faktura indeholder en kolonne med data,
 det kan tage relativ lang tid at finde frem.
 Det kunne være leveringstid, der løbende kan ændre sig, og skal hentes fra
 et eksternt system.
 
 For at gøre siden hurtigere, kunne tænke mig at vise tabellen først, med de
 fleste data, i almindelig html, genereret på serveren.
 Og derefter opdatere leveringstiden via ajax.
 Kan browseren sende f.ex. 20 ajax-requests til serveren på een gang, og
 holde styr på dem, så de enkelte ordrelinier bliver opdateret efterhånden
 som resultatet indløber, eller skal man styre det i browseren, så et
 resultat trigger det næste request?
 Requestene bliver jo sendt til den samme url, med forskellige post-data.
 
 Det er ikke sikkert brugeren er interesseret i den kolonne, så hentningen
 kunne startes med et tryk på en knap "Vis leveringstid" i stedet for at
 blive trigget af document ready.
 
 Jeg bruger jquery.
 
 Leif
 
 
 
 
 
 
 |  |  | 
  Birger Sørensen (19-09-2011) 
 
	
          | |  | Kommentar Fra : Birger Sørensen
 | 
 Dato :  19-09-11 13:57
 | 
 |  | 
 
            Leif Neland sendte dette med sin computer:
 > Lidt løst snak...
 >
 > En tabel, f.ex.. ordrelinier på en faktura indeholder en kolonne med data, 
 > det kan tage relativ lang tid at finde frem.
 > Det kunne være leveringstid, der løbende kan ændre sig, og skal hentes fra et 
 > eksternt system.
 >
 > For at gøre siden hurtigere, kunne tænke mig at vise tabellen først, med de 
 > fleste data, i almindelig html, genereret på serveren.
 > Og derefter opdatere leveringstiden via ajax.
 > Kan browseren sende f.ex. 20 ajax-requests til serveren på een gang, og holde 
 > styr på dem, så de enkelte ordrelinier bliver opdateret efterhånden som 
 > resultatet indløber, eller skal man styre det i browseren, så et resultat 
 > trigger det næste request?
 > Requestene bliver jo sendt til den samme url, med forskellige post-data.
 >
 > Det er ikke sikkert brugeren er interesseret i den kolonne, så hentningen 
 > kunne startes med et tryk på en knap "Vis leveringstid" i stedet for at blive 
 > trigget af document ready.
 >
 > Jeg bruger jquery.
 >
 > Leif
 Et løst svar... ^^
 Det kan godt lade sig gøre at sende 20 AJAX request samtidig.
 Du skal så blot holde styr på hvilken request, der henter data til 
 hvilken række/kolonne, og der skal oprettes eet objekt til hver 
 request.
 Det er også vigtigt at der arbejdes asynkront - altså at open kaldes 
 med open( 'metode', prg, true); - den tredie parameter skal være true, 
 da det enkelte kald ellers vil være blocking (synkront) - altså alt 
 videre arbejde på/med siden standses, indtil der foreligger et brugbart 
 resultat af requesten.
 Om serveren vil være i stand til at behandle alle requests på een gang 
 er så noget andet, specielt hvis alle er til samme script.
 Men man kan vel skrive en default tekst i de aktuelle felter, så der 
 ikke er helt tomt i huset når gæsten ankommer, og hyn kan se der 
 arbejdes på sagen...
 Birger
 -- 
http://varmeretter.dk  - billig, sund og hurtig mad
http://bbsorensen.dk |  |  | 
  Kim Ludvigsen (19-09-2011) 
 
	
          | |  | Kommentar Fra : Kim Ludvigsen
 | 
 Dato :  19-09-11 14:26
 | 
 |  | 
 
            Den 19-09-2011 14:56, Birger Sørensen skrev:
 > Men man kan vel skrive en default tekst i de aktuelle
 > felter, så der ikke er helt tomt i huset når gæsten
 > ankommer, og hyn kan se der arbejdes på sagen...
 Jeg har set flere bruge en gif med en animeret cirkel, der 
 angiver, at der arbejdes. Det er nok bedre end en tekst.
 -- 
 Mvh. Kim Ludvigsen
 Hold dit livs drømmeferie i Thailand:
http://rejse-til-thailand.dk |  |  | 
  Stig Johansen (20-09-2011) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  20-09-11 06:47
 | 
 |  | Leif Neland wrote:
 
 > Lidt løst snak...
 [snip]
 
 Det er lige så nemt som at klø sig et vist sted (hvis dine arme er lange
 nok ;)
 
 > Jeg bruger jquery.
 
 UPS! - det kan godt være det gør dine arme for korte.
 
 Jeg kan godt finde mit 'Ajax framework' frem og poste det, men det er lidt
 besværligt, så hvis du er bundet af jquery, giver det ingen mening.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
  Martin Larsen (20-09-2011) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  20-09-11 22:39
 | 
 |  | Leif Neland wrote:
 
 > Kan browseren sende f.ex. 20 ajax-requests til serveren på een gang, og
 > holde styr på dem, så de enkelte ordrelinier bliver opdateret efterhånden
 > som resultatet indløber, eller skal man styre det i browseren, så et
 > resultat trigger det næste request?
 
 Jeg har arbejdet med præcis den problematik i forbindelse med
 metasøgemaskiner til flybilletter. Her søges på serveren parallelt på
 omkring 20 forskellige flyhjemmesider og api'er.
 
 Da hver søgning tager mellem et par sekunder for de hurtigste api'er og
 op til måske 1 minut i visse tilfælde for de langsomste hjemmesider, kan
 klienten (browseren) ikke vente på at alle resultaterne er klar. Derfor
 sendes de "drypvis" til browseren.
 
 Vi valgte en løsning hvor browseren periodisk (vistnok hvert andet
 sekund svjh) anmoder om en opdateringspakke i JSON format. I denne pakke
 er der så de resultater som er fundet siden sidste pakke. Der kan derfor
 teoretisk være mellem 0 og N resultater hvor N er antallet af
 flyselskaber der søges på. Når der ikke er flere resultater, sendes en
 stopkommando til browseren i stedet for en opdateringspakke.
 
 I dit tilfælde vil det svare til at du periodisk beder om en
 opdateringspakke med leveringstider, som så via en unik ID bindes op til
 de respektive felter. Stop når alle felter er udfyldt, eller der kommer
 en stopkommando eller en timeout nås.
 
 Fremgangsmåden både simplificerer kodningen og mindske belastningen på
 serveren.
 
 Martin
 
 
 |  |  | 
  Leif Neland (22-09-2011) 
 
	
          | |  | Kommentar Fra : Leif Neland
 | 
 Dato :  22-09-11 01:18
 | 
 |  | 
 
            Den 20-09-2011 23:39, Martin Larsen skrev:
 > Leif Neland wrote:
 >
 >> Kan browseren sende f.ex. 20 ajax-requests til serveren på een gang, og
 >> holde styr på dem, så de enkelte ordrelinier bliver opdateret efterhånden
 >> som resultatet indløber, eller skal man styre det i browseren, så et
 >> resultat trigger det næste request?
 >
 > Jeg har arbejdet med præcis den problematik i forbindelse med
 > metasøgemaskiner til flybilletter. Her søges på serveren parallelt på
 > omkring 20 forskellige flyhjemmesider og api'er.
 >
 > Da hver søgning tager mellem et par sekunder for de hurtigste api'er og
 > op til måske 1 minut i visse tilfælde for de langsomste hjemmesider, kan
 > klienten (browseren) ikke vente på at alle resultaterne er klar. Derfor
 > sendes de "drypvis" til browseren.
 >
 > Vi valgte en løsning hvor browseren periodisk (vistnok hvert andet
 > sekund svjh) anmoder om en opdateringspakke i JSON format. I denne pakke
 > er der så de resultater som er fundet siden sidste pakke. Der kan derfor
 > teoretisk være mellem 0 og N resultater hvor N er antallet af
 > flyselskaber der søges på. Når der ikke er flere resultater, sendes en
 > stopkommando til browseren i stedet for en opdateringspakke.
 >
 Men så må serveren jo selv splitte requestet op i requests til hver 
 hjemmeside/api, og holde styr på, hvor mange resultater, der er klar.
 Jeg har kun een, højst to brugere på systemet, så mon ikke det er 
 lettere bare at lade browseren kaste 20 requests efter serveren, frem 
 for at skulle splitte det op på serveren. Det lyder trods alt lidt 
 langhåret for mig...
 Leif
 -- 
 Check out www.waze.com  - it's a social GPS app where drivers share 
 real-time road info (traffic, accidents, police, speedcams and more) 
 with each other. If you're an iPhone Android Blackberry Symbian or 
 Windows Mobile user then this is the perfect app to use for daily driving.
            
             |  |  | 
   Stig Johansen (22-09-2011) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  22-09-11 06:55
 | 
 |  | Leif Neland wrote:
 
 > Jeg har kun een, højst to brugere på systemet, så mon ikke det er
 > lettere bare at lade browseren kaste 20 requests efter serveren, frem
 > for at skulle splitte det op på serveren. Det lyder trods alt lidt
 > langhåret for mig...
 
 Uanset hvor mange brugere du har er den eneste løsning at sende requests af
 sted til serveren for hvert felt, alt andet er tåbeligt.
 
 Bemærk at stort set alle browser/servere kører med Keep-connection, hvilket
 betyder:
 1) TCP/IP sessionen genbruges (eller rettere holdes i live).
 2) Threads bliver genbrugt pga. 1 i det omfang de er 'færdige'.
 
 Så afhængig af tid osv, er det ikke engang sikkert der bliver spawnes 20
 threads.
 
 Kører man med NPTL, er det i øvrigt ret ligegyldigt, da en 'husholdningspc'
 for 4-5 år siden kunne spawne 200.000 Threads/sekund.
 
 Så lave et request for hvert felt, og udfyld efterhånden som de indløber.
 
 Hvis du nummererer liniernerne med id'er, eks id=line_1, id=line_2 osv
 og har en global var nbr_lines, kan det kalres med ganske få linier JS hvis
 du har styr på central Ajax.
 
 jQuery kender jeg ikke til, da den ikke inderholder de funktioner/krav jeg
 bruger, så den kan jeg ikke hjælpe med.
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
   Martin Larsen (22-09-2011) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  22-09-11 22:54
 | 
 |  | Leif Neland wrote:
 
 > Men så må serveren jo selv splitte requestet op i requests til hver
 > hjemmeside/api, og holde styr på, hvor mange resultater, der er klar.
 
 Det er nu enkelt nok da hver søgning er identificeret med en unik ID,
 men ...
 
 > Jeg har kun een, højst to brugere på systemet, så mon ikke det er
 > lettere bare at lade browseren kaste 20 requests efter serveren, frem
 > for at skulle splitte det op på serveren. Det lyder trods alt lidt
 > langhåret for mig...
 
 når du kun har 20 felter, eller for at være mere præcis, et kendt antal
 felter, så fyr dem bare afsted. Det vil fungere helt fint.
 
 Med metasøgeren er det anderledes, her ved browseren ikke hvor mange
 resultater der ankommer, så den kan af gode grunde ikke sende et bestemt
 antal requests afsted. Der kan være fra 0 hvis du vil et sted hen på en
 dato hvor ingen flyver, til over 700 resultater for de mest populære mål
 som fx London.
 
 
 
 |  |  | 
  Stig Johansen (22-09-2011) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  22-09-11 07:15
 | 
 |  | Leif Neland wrote:
 
 > Requestene bliver jo sendt til den samme url, med forskellige post-data.
 
 Ja, men med lidt 'behändigkeit' sender du id'en med i Ajax requestet, så du
 ved hvor retursvaret skal placeres ;)
 
 (Og jo man kan også sagtens have en lille ikon på hver linie, der aktiverer
 Ajax ved tryk)
 
 Fortæl hvad vej du går, for jeg har en del fungerende ting, der gør netop
 det du ønsker, men hvis du er bundet til jQuery, gider jeg ikke finde det
 frem - da det er besværligt (og tidskrævende).
 
 --
 Med venlig hilsen
 Stig Johansen
 
 
 |  |  | 
  Martin Larsen (22-09-2011) 
 
	
          | |  | Kommentar Fra : Martin Larsen
 | 
 Dato :  22-09-11 23:06
 | 
 |  | 
 
            Stig Johansen wrote:
 > Fortæl hvad vej du går, for jeg har en del fungerende ting, der gør netop
 > det du ønsker, men hvis du er bundet til jQuery, gider jeg ikke finde det
 > frem - da det er besværligt (og tidskrævende).
 jQuerys ajaxfunktion er blot en simpel wrapper, så din ajaxløsning vil 
 fint kunne fungere sammen med jQuery uanset hvordan du har lavet det    Jeg har selv brugt mine egne ajaxfunktioner sammen med jQuery uden 
 problemer.
 jQuery handler mestendels om UI og i mindre grad om den bagvedliggende 
 logik og datahåndtering.
 Martin
            
             |  |  | 
   Stig Johansen (23-09-2011) 
 
	
          | |  | Kommentar Fra : Stig Johansen
 | 
 Dato :  23-09-11 06:56
 | 
 |  | 
 
            Martin Larsen wrote:
 > jQuerys ajaxfunktion er blot en simpel wrapper, så din ajaxløsning vil
 > fint kunne fungere sammen med jQuery 
 Ja, men jeg fortolker det som om Leif vil bruge jQuery's indbyggede Ajax.
 Jeg har skam set sider hvor der er jQuery + et andet framework (med Ajax) og
 alligevel egen Ajax    > uanset hvordan du har lavet det    Den er selvfølgelig lavet _perfekt_ under hensyntagen til memory leaks osv..
 - og selvfølgelig med UTF8toansi indbygget..    > jQuery handler mestendels om UI og i mindre grad om den bagvedliggende
 > logik og datahåndtering.
 I know.
 -- 
 Med venlig hilsen
 Stig Johansen
            
             |  |  | 
 |  |