2016-12-19 4 views
1

サーバーで何か起こった後にCSS要素の色を変更することはできますか?CSSスタイルをAJAXで変更してリロードせずに

私のプログラムではボタンをクリックし、その後にPHPプログラムが起動します。このプログラムは、サーバーの値(Raspberry PiのGPIOポートの値)を変更します。

サイドが読み込まれた後にPHPでCSS属性を変更する可能性はありますか? AJAXを試してみると、サイトが既にロードされているため影響はなく、出力はサイトに影響しません。

<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> 

AJAXファイルの内容:最後に

$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>"; 

私はJS変数 "gpio_status" をしたいです。しかし、それは常に私が最初に与えた値である同じ値を持っています:0私はcolsole.log()変数私は常に0を得る。しかし、私の他のコードは正常に動作します。

+0

は、javascriptを使用してクラスまたはインラインスタイルを切り替えることによって、ajaxコールバック内で簡単に行う必要があります。しかし、全体的な質問の詳細はあまりにも曖昧です。 [質問]と[質問チェックリスト](http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist)を読んでから適切な詳細とコードで質問を更新してください。 – charlietfl

+1

'AJAXを試してみるとサイトが既にロードされているので影響はありません。出力はサイトには何の影響もありません。 - あなたは間違ったことをしています。コードを表示してください。 –

+0

私のコードを確認できますか? – ChiefAlu

答えて

0

PHPはサーバー側の言語です。これは、すべての目的と目的のために、リクエストで応答して応答を吐いて死に至ることを意味します。はい。ページをリロードして、PHPがバックエンドに何らかの状態を制御させたい場合、要素のCSSスタイルを変更することができます。

私はAJAXを試しても、サイトが既にロードされているため影響はありません。出力はサイトに影響しません。

AJAXはあなたの質問とまったく同じ問題を解決するために考案されたので、間違ってAJAXする必要があります。

+0

しかし、私は、JSインタプリタがAJAXから読み込んだコードを読み込んでいないと思います。サイトが既に読み込まれているからです。 – ChiefAlu

関連する問題