Avatar billede nemlig Professor
21. maj 2024 - 17:19 Der er 3 kommentarer og
1 løsning

Ajax - indlæs webside og derefter hente data

Hejsa.
Jeg har et lille PHP-script, hvor jeg henter nogle eksterne data. Det tager 8-10 sekunder at hente dataene, men websiden vises først, når dataene er hentet.
Man kan komme i tvivl, om systemet hænger...

Findes der en simpel løsning, hvor der sker følgende, når websiden kaldes:
1. Vis med det samme, at der hentes data med info om at der hentes data eksternt og at det tager typisk 10 sekunder. Jeg kan evt. smide et gif-hjul på siden, så man kan se, at systemet arbejder
2. Kald ekstern side og hent data.
3. Vis de hentede data på samme webside uden at siden skal loades igen. Samtidig skal gif-hjulet erstattes af en anden gif.

Nogen forslag til løsning - evt. link til noget tutorials.
Avatar billede arne_v Ekspert
21. maj 2024 - 17:40 #1
Langt de fleste web sider bruger jo den slags idag.

Og der er masser af frameworks til at understøtte det.

Du skal have 2 PHP script:
- en web service som leverer data
- en web side med noget JavaScript der laver AJAX kald til web service

Jeg er ikke specielt god til JavaScript, så jeg bruger bare jQuery til det hvis jeg har behov.

Diverse Angular/Vue/React eksperter ligger sikkert flade på gulvet af grin over at nogen bruger gammeldags jQuery. Men det virker.

Det er et komplet eksempel med jQuery JavaScript og PHP Slim web service her:

https://www.vajhoej.dk/arne/articles/vmsweb.html#2020_slim

(du kan ignorere at artiklen drejer sig om at køre det på VMS - server styresystemet har ikke nogen betydning for selve JavaScript og PHP koden)
Avatar billede nemlig Professor
27. maj 2024 - 10:59 #2
Beklager det sene svar. Jeg har set på dit eksempel og fundet lidt mere inspiration på nettet.
jQuery benytter jeg i forvejen i forbindelse med en bookingkalender, hvor der kan skiftes fra måned til måned og hvor der hentes data fra DB ved skifte. Det fungerer hæderligt.

Jeg er kommet i mål med en løsning med noget simpelt css (display:none; og display:block;) og 10 linjer javascript.

Og som du også skriver, så er det løst med 2 x PHP script.

Tak for input :).
Avatar billede jonasjoergensen Juniormester
22. juni 2024 - 17:07 #3
Kan du ikke bare lave Defer på scriptet i websitets head?

Ja, eller delay
Avatar billede nemlig Professor
22. juni 2024 - 22:07 #4
Tak for input, men jeg er ikke med på hvad Defer betyder.
Men jeg har det jo til at virke jf. #2.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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