Sida 1 av 1

Sicka parametrar mellan PHP och Javascript

Postat: 14 mars 2015, 21:38:21
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> 

Re: Sicka parametrar mellan PHP och Javascript

Postat: 14 mars 2015, 22:10:19
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.

Re: Sicka parametrar mellan PHP och Javascript

Postat: 15 mars 2015, 09:13:18
av gunnerfeldt
Ajax funkar bra.
Websockets är nog ett modernare och snyggare sätt.
Behöver inte pollas t.ex.

Re: Sicka parametrar mellan PHP och Javascript

Postat: 15 mars 2015, 09:15:13
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!

Re: Sicka parametrar mellan PHP och Javascript

Postat: 17 mars 2015, 09:19:03
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

Re: Sicka parametrar mellan PHP och Javascript

Postat: 17 mars 2015, 15:42:33
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