Avatar billede nemlig Professor
12. november 2014 - 16:09 Der er 11 kommentarer og
1 løsning

Tidsur eller lignende, mens siden opdateres

Hejsa.

Jeg har et ganske simpelt script, som fx henter en temperatur på en IHC-føler.

Mit kald kan se sådan her ud:

$json = json_decode(file_get_contents('http://www.domæne.dk/cmd.php?id=45275');

Der kan godt gå fx 5-10 sekunder, inden der returneres en værdi eller status.

Hvordan laver jeg en løsning, hvor der ved indlæsning af scriptet vises et lille animeret ur (jeg går ud fra, at det kan være en animeret GIF), for at vise, at der arbejdes.....

Er løsningen JavaScript / AJAX ?, og hvis nogen har en enkelt løsning, så vil jeg være glad for et eksempel/link på, hvordan det kan gøres.
Avatar billede jakobdo Ekspert
12. november 2014 - 16:33 #1
http://jsfiddle.net/bk1vt9x7/

Og så skal ihc.php jo indeholde den kode, der kalder:
$json = json_decode(file_get_contents('http://www.domæne.dk/cmd.php?id=45275');

Og det skal jo tilpasses yderligere, så du kan få korrekt svar retur.
Men håber det giver mening. :o)
Avatar billede nemlig Professor
12. november 2014 - 16:50 #2
Hmmmm, jeg er som sædvanlig lidt tungnem ;)

Jeg har i princippet et panel med en række knapper (links), som kalder hvert sit script:

Knap1 = Aflæs temp, kaldet = onclick=window.open('tjekTemp.php','_blank')
Knap2 = Tænd lys, kaldet = onclick=window.open('taendlys.php','_blank')

I fx tjekTemp.php har jeg koden til IHC-kaldet:

$json = json_decode(file_get_contents('http://www.domæne.dk/cmd.php?cont='.$row2['ip_ihc1'].'&user='.$row2['bruger_ihc1'].'&pass='.$row2['kode_ihc1'].'&id='.$ressourceID.'&cmd=toggle'));

Jeg tjekker på resultatet:

if($json->{"loginstatus"}+0 == 1)
{
    if($json->{"status_".$ressourceID} == '0' )
    {
        $kvittering = 'Tænd alt er nu aktiveret.';
    } else
    {
        $fejl = 'Der ER forbindelse med IHC-controlleren, men der gik alligevel noget galt.....';
    }
} else
{
    $fejl = 'Der er ingen forbindelse med IHC-controlleren....';
}

og skriver kvitteringen, hvis ingen fejl, ellers skrives fejlen.
Avatar billede jakobdo Ekspert
12. november 2014 - 16:54 #3
Ja, og det skal du jo så ændre. :o)

Altså det kunne jo laves "smart".
Hvis du nu lavede:

<button class="ajaxLoader" data-url="tjekTemp.php">Aflæs Temp</button>

Og så skal du "bare" bruge jquery koden:

$(".ajaxLoader").click(function(){
        var oUrl = $(this).data("url");
        alert("Kode som skal vise et billede");
        $.get(oUrl,function(data){
          alert("Kode som skal fjerne billedet igen"); 
        }).fail(function(){
            alert( "Der opstod en fejl" );
        });
    });

Så vil den i et ajax kald, kalde tjekTemp.php

Kan du ikke overføre brugernavn osv. via en session og ikke direkte i kaldet ?
Avatar billede nemlig Professor
12. november 2014 - 17:10 #4
Jeg skal have det hele med i kaldet, da cmd.php kan ligge på en helt anden server. Ip, brugerlogin og ressourceID er parametre, som skal sendes med til IHC-controlleren og har ikke sammenhæng med den bruger, der bruger systemet.
RessourceID er den funktion på IHC controlleren, der ønskes aktiveret eller aflæst (fx tænd lys eller aflæst temp). Dermed har hver knap sit unikke ressourceID.
Avatar billede jakobdo Ekspert
12. november 2014 - 19:56 #5
Så er det jo "bare" at smide alt med i data-url="....."
Ligesom du gør i dag, bare med onclick... window.open("....")
Avatar billede jakobdo Ekspert
12. november 2014 - 19:57 #6
Ville dog anbefale at kigge på at "poste" disse data og ikke via "get", men altså POST
Avatar billede nemlig Professor
12. november 2014 - 20:38 #7
#3 Men det er jo først i tjekTemp.php jeg kalder temperaturen og får ventetiden, så jeg skal vel have AJAX koden i tjekTemp.php-scriptet?

1. Mit knappanel ligger i filen "mobil.php", hvor jeg har knapperne og linket til fx tjekTemp.php
2. Jeg klikker på knappen i "mobil.php" og kalder dermed "tjekTemp.php"
3. Via json og file-get-contens() kalder jeg temperaturen på IHC-controlleren via cmd.php-scriptet og her opstår ventetiden indtil jeg får et resultat.

Er det mon i virkeligheden cmd.php-scriptet, løsningen skal laves?
Avatar billede jakobdo Ekspert
12. november 2014 - 20:45 #8
Hej Jørn,
har du forsøgt at teste hvad jeg rent faktisk skriver?
Hvis du tager min kode fra #3, vil jo have fungerende kode...
Avatar billede nemlig Professor
12. november 2014 - 20:58 #9
OK, jeg forstår dit hint... ;) Jeg går i gang!
Avatar billede jakobdo Ekspert
12. november 2014 - 21:34 #10
;o)

Du bør jo evt. starte helt simpelt.
Få ajax til at spille med et direkte kald til et af dine ihc services.
Virker den, så vil resten nok også gøre, men så er du ikke "sovset" ind i 1 mio andre linjer kode, du skal holde styr på undervejs. :o)
Avatar billede nemlig Professor
16. januar 2016 - 12:14 #11
Hej Jakob. Lukketid, smid et svar.
Avatar billede jakobdo Ekspert
16. januar 2016 - 12:43 #12
Svar
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