2016-12-02 1 views
1

Ich versuche, meine Javascript-Funktionen ausführen, die PHP-Code haben, wenn ich auf eine Schaltfläche klicken, aber sobald ich die Seite im Browser laden alle JavaScript-Funktionen ausführen, ohne auf eine Schaltfläche klicken. Wenn ich versuche, eine Taste zu drücken und eine Funktion auszuführen, passiert nichts. Mein Code ist:Ausführen von Python-Skript von einer PHP-Seite

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width" /> 
    <title> LED </title> 
    <script> 
     function exec_vermelho(){ 
      <?php exec("sudo python led.py 100 0 0"); ?> 
     } 
     function exec_verde(){ 
      <?php exec("sudo python led.py 0 100 0"); ?> 
     } 
     function exec_azul(){ 
      <?php exec("sudo python led.py 0 0 100"); ?> 
     } 
     function exec_amarelo(){ 
      <?php exec("sudo python led.py 100 100 0"); ?> 
     } 
     function exec_ciano(){ 
      <?php exec("sudo python led.py 0 100 100"); ?> 
     } 
     function exec_magenta(){ 
      <?php exec("sudo python led.py 100 0 100"); ?> 
     } 
     function exec_branco(){ 
      <?php exec("sudo python led.py 100 100 100"); ?> 
     } 
    </script> 
</head> 
<body> 
    <input type="button" name="botao_vermelho" value="Vermelho" onclick="exec_vermelho()"> 
    <input type="button" name="botao_verde" value="Verde" onclick="exec_verde()"> 
    <input type="button" name="botao_azul" value="Azul" onclick="exec_azul()"> 
    <input type="button" name="botao_amarelo" value="Amarelo" onclick="exec_amarelo()"> 
    <input type="button" name="botao_ciano" value="Ciano" onclick="exec_ciano()"> 
    <input type="button" name="botao_magenta" value="Magenta" onclick="exec_magenta()"> 
    <input type="button" name="botao_branco" value="Branco" onclick="exec_branco()"> 
</body> 
</html> 

Weiß jemand, warum alle PHP auf Funktionen einmal execute ich die Seite laden und dann passiert nichts, wenn ich auf einen Knopf klicken? Muss ich irgendetwas an den Knöpfen oder am Javascript ändern?

Vielen Dank.

+1

WARUM würdest du Apache 'sudo' gewähren? _ ** WARUM? ** _ – cwallenpoole

Antwort

2

PHP ist serverseitiger Code und hat den gesamten Code an dem Punkt ausgeführt, an dem Sie die Seite geladen haben. Werfen Sie einen Blick auf den Quellcode im Browser und Sie werden sehen, dass es in Ihrer Funktionen kein Javascript-Code ist - Sie möchten vielleicht prüfen, mit XMLHttpRequest oder Fetch

-1

Sie können es nicht so machen, weil PHP interpretiert Dein Code vor Javascript. Es macht also keinen Sinn, eine PHP-Funktion per Javascript aufzurufen.

Sie müssen einen AJAX-Aufruf an ein PHP-Skript machen, das das Python-Skript asynchron ausführt.

Like:

// HTML 
<input type="button" name="botao_vermelho" value="Vermelho"> 

// JS 
$('input[type="button"]').click(function(event) { 
    event.preventDefault(); 

    $.ajax({ 
     url: '/phpscript.php?button=' + $(this).attr('name'), 
    }).done(function(data){ 
     console.log(data); 
    }); 
}); 

Und jetzt nur noch einen PHP-Skript, das Ihre Python Hinrichtung ausgeführt wird. Um zu wissen, auf welche Schaltfläche geklickt wurde, ist der beste Weg, das Attribut name von jeder Schaltfläche dem PHP-Skript zu geben.

+0

Er benutzt jQuery nicht ... – Endless

+0

Boah, dann darf er plain javascript verwenden. Ich wollte einfach nicht so viel Code für ein Beispiel schreiben. –

+0

dann schreibe ein Beispiel mit fetch api das ist viel einfacher als xhr :) – Endless

Verwandte Themen