2016-12-19 7 views
1

Ist es möglich, die Farbe eines CSS-Elements nach etwas passiert auf dem Server zu ändern?Ändern Sie CSS-Stil mit AJAX und ohne Nachladen

In meinem Programm klicke ich auf eine Schaltfläche und danach startet ein PHP-Programm. Dieses Programm ändert einen Wert im Server (Wert eines GPIO-Ports eines Raspberry Pi).

Gibt es eine Möglichkeit, dass ich ein CSS-Attribut mit PHP ändern kann, nachdem die Seite geladen wurde? Wenn ich AJAX ausprobiere, hat das keine Auswirkungen, da die Site bereits geladen ist und die Ausgabe keine Auswirkungen auf die Site hat.

<div id="output"> 
    <script type='text/javascript'> 
    var gpio_status = '0'; 
    </script> 
</div> 

<script type="text/javascript"> 
var php_output = document.getElementById("output"); 
var request; 

function gpio_out(gpio_nr) { 
    request = new XMLHttpRequest(); 
    request.open("post", "gpio_out.php", true); 
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    request.send("daten=" + gpio_nr); 
    request.onreadystatechange = request_status; 

} 

function request_status() { 
    if (request.readyState == 4 && request.status == 200) { 
    php_output.innerHTML = request.responseText; 
    } 
} 
</script> 

Inhalt der AJAX-Datei:

$gpio_status = shell_exec("cat /sys/class/gpio/gpio" . $gpio_nr . "/value"); 

    echo "<script type='text/javascript'>"; 
    echo "var gpio_status = '$gpio_status';"; 
    echo "</script>"; 

Am Ende mag ich das JS-Variable "gpio_status". Aber es hat immer den gleichen Wert, den ich am Anfang angegeben habe: 0. Wenn ich colole.log() die Variable bekomme, bekomme ich immer 0. Aber mein anderer Code funktioniert gut.

+0

sollte leicht in einem Ajax-Callback getan werden, entweder durch Umschalten einer Klasse oder Inline-Stil mit Javascript. Insgesamt sind die Details der Frage viel zu vage. Nehmen Sie sich etwas Zeit, um [fragen] und [Frage-Checkliste] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist) zu lesen und aktualisieren Sie dann die Frage mit den richtigen Details und Code – charlietfl

+1

'Wenn ich AJAX versuche es hat keine Auswirkungen, weil die Website bereits geladen ist, und die Ausgabe hat keine Auswirkungen auf die Website "- Sie tun es falsch, zeigen Sie den Code –

+0

Können Sie bitte überprüfen Sie meinen Code? – ChiefAlu

Antwort

0

PHP ist eine serverseitige Sprache, das bedeutet (für alle Absichten und Zwecke), dass Sie es mit einer Anfrage treffen und eine Antwort ausspucken und stirbt. Ja, Sie können den CSS-Stil eines Elements ändern, wenn Sie bereit sind, die Seite neu zu laden, und bereit sind, dass PHP einen Status im Backend steuert.

Wenn ich versuche AJAX hat es keine Auswirkungen, weil die Website bereits geladen ist, und die Ausgabe hat keine Auswirkungen auf die Website.

Sie müssen dann AJAXing falsch sein, wie AJAX erfunden wurde, um Probleme genau wie Ihre Frage zu lösen.

+0

Aber ich denke, der JS-Interpreter lädt nicht den Code, den ich von AJAX lade, weil die Seite bereits geladen ist. – ChiefAlu

Verwandte Themen