Sicka parametrar mellan PHP och Javascript

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Sicka parametrar mellan PHP och Javascript

Inlägg av Oltronix »

Sicka parametrar mellan PHP och Javascript. Går det? Är det vettigt? Det jag egentligen vill göra är att läsa switchar på en RPI och presentera switch-status på en websida på annan dator (annat IP-nr). Jag vill även ha uppdateringen av switch-status varje sekund. Jag läser en file med switch-status (switch.txt) med PHP. (jag har flyttat file från RPI med wget. Det finns nog bättre sätt än wget) Ett av mina problem är att jag har inte hittat någon file-read-sätt för Javascript. Det finns förmodligen men jag saknar lämplig info. Jag har använt
http://www.w3schools.com/js/default.asp som kunskapskälla.

Javascript och PHP bok rekomendation?

Det jag har skrivit ett testprog-hack för att testa.
-timer för att uppdatera läst data varje sekund
-Läsa file
-Presentera data från på websida
Men jag får inte till att att min data uppdateras varje sekund

Kod: Markera allt

<html>
<head>
<title>READ SW</title>
<script type="text/javascript">
function display_c(){
var refresh=1000; // Refresh rate in milli seconds
mytime=setTimeout('display_ct()',refresh)
}

function display_ct() {
var strcount
var x = new Date()
document.getElementById('ct').innerHTML = x;
tt=display_c();
}

function sw(swx) {
document.getElementById('sw1').innerHTML = swx;
}
</script>
</head>

<body onload=display_ct();>
<span id='ct' ></span>
<p id='sw1'>Switch1 null</p>
<p id='sw2'>Switch2 null</p>

Switchar:
<?php
$myfile = fopen("switch.txt", "r") or die("Kan inte oppna file!");
   $sw2= fread($myfile,filesize("switch.txt"));
   echo $sw2;
#sw();
fclose($myfile);
?>
<script>
document.getElementById('sw1').innerHTML = "InnerHTML sw1";
document.getElementById('sw2').innerHTML = "$sw2";
sw("var1");
</script>
</body>
</html> 
Användarvisningsbild
hawkan
Inlägg: 2636
Blev medlem: 14 augusti 2011, 10:27:40

Re: Sicka parametrar mellan PHP och Javascript

Inlägg av hawkan »

Titta efter JQuery och AJAX biblioteken för Javascript.
De ger allt du troligen behöver för att skicka data mellan
Javascript och php, och även tidsinställt t ex varje sekund.
Det finns beskrivet på w3schools.

Kod: Markera allt

function executeQuery() {
  $.ajax({
    url: 'url/path/here',
    success: function(data) {
      // do something with the return value here if you like
    }
  });
  setTimeout(executeQuery, 5000); // you could choose not to continue on failure...
}

$(document).ready(function() {
  // run the first time; all subsequent calls will take care of themselves
  setTimeout(executeQuery, 5000);
});
Den här kodsnutten som jag snodde nånstans körs var 5-e sekund.
"url" anger en php-fil på servern som körs och levererar data till funktionen
som anges efter "success". Det kluriga är att få rätt format men
allt sånt finns dokumenterat.

Det blir lite stickord och pekare som du kanske kan komma vidare med.
gunnerfeldt
Inlägg: 87
Blev medlem: 29 november 2010, 00:32:55

Re: Sicka parametrar mellan PHP och Javascript

Inlägg av gunnerfeldt »

Ajax funkar bra.
Websockets är nog ett modernare och snyggare sätt.
Behöver inte pollas t.ex.
tgr
Inlägg: 725
Blev medlem: 10 maj 2006, 09:17:07
Ort: Mölndal

Re: Sicka parametrar mellan PHP och Javascript

Inlägg av tgr »

Vill du göra det "på riktigt" så bygger du t.ex. ett RESTapi i php/Python eller liknande som du sedan pratar med via JS från webbservern.
Då får du två separata delar och det blir enkelt att lägga till funktion.
T.ex. Kan du senare bygga ett api på din RPi som ditt externa api pratar med för att få färsk data och slippa wget.

Du kan kika på ett exempel som jag byggt runt ett lib för att prata seriellt med min tv.
https://github.com/erhj/TVWebRemote
Ful, simpel sak men det funkar. Den ger mig en fjärris på hemsidan som går via serieform från api-maskinen (en RPi) till tv. Den kan även läsa info om tv är på eller av osv.

Det är byggt i Python med bottle med funkar såklart lika bra med php.
Då skickar du kommandon och begär info via HTTP POST/GET ifrån javascripttet.
Kika på Ajax, jQuery i posten ovan.

Lycka till!
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Sicka parametrar mellan PHP och Javascript

Inlägg av Oltronix »

Oj Ajax och jQuery verkar ha spännande sin syntax som tex

Kod: Markera allt

$(document).ready(function(){
    $("button").click(function(){
        $.get("demo_test.asp", function(data, status){
            alert("Data: " + data + "\nStatus: " + status);
        });
    });
});
Kan detta inhålla en deklarationen av några functioner mån tro...
Jag slipper kratta löv eller pusta på båt, ännu för kallt, nu får lägga tid på att läsa och provköra.

Någon som har förslag till bok på Javascript, Ajax, JQuery, ... ?

http://www.w3schools.com
är jättebra men jag saknar bok. Jag tror att det är överblicken jag saknar

Edit. ok ok

Kod: Markera allt

$(document).ready(function(){
    $("#hide").click(function(){
        $("p").hide();
    });
});
är inte så konstigt när man förstår syntaxen
Användarvisningsbild
Oltronix
Inlägg: 408
Blev medlem: 10 december 2011, 21:24:38
Ort: Nynäs

Re: Sicka parametrar mellan PHP och Javascript

Inlägg av Oltronix »

Så här blev det

Kod: Markera allt

<!DOCTYPE html>
<html><head><title>php_9</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js">$
<script>
function executeQuery() {
   $.ajax({url: "switch.txt", success: function(result){
      $("#div1").html(result);
   }});
   setTimeout(executeQuery, 1000);
}
$(document).ready(function() {
   setTimeout(executeQuery, 1000);
});
</script>
</head>
<body onload=executeQuery();> 
Switch-read-test-file
<div id="div1"></div>
</body></html>
Det finns säkert andra sätt. jQuery har massa möjligheter. Nu får jag fortsätta genom att ansluta till RPIn via nätet eller "leka" mer med Javascript, jQuery, Ajax. Det finns massa olika möjligheter att skapa dynamsika websidor med verktygen, språken.

Det problem jag haft är ibland så uppdateras inte websidan med ändringar i filen "switch.txt". Ibland verkar låsningen hävas genom att tömma cachen. Men varför skulle det finns en kopplingen. Är det inte bara websidor som finns i cachen?

Edit: Jag glömde: Tack för supporten :-) Hade nog gett upp annars
Skriv svar