使用AJAX更改CSS样式,无需重新加载

时间:2016-12-19 02:21:35

标签: javascript php css ajax

是否可以在服务器中发生某些事情后更改CSS元素的颜色?

在我的程序中,我单击一个按钮,然后启动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变量&#34; gpio_status&#34;。但它始终具有相同的值,这是我在开头给出的值:0。如果我colsole.log()变量我总是得到0.但我的其他代码工作正常。

1 个答案:

答案 0 :(得分:0)

PHP是一种服务器端语言,这意味着(出于所有意图和目的)你用请求命中它并吐出响应并死掉。是的,如果您愿意重新加载页面并且愿意让PHP控制后端的某些状态,则可以更改元素的CSS样式。

  

如果我尝试使用AJAX,它没有任何影响,因为网站已经加载,输出对网站没有影响。

你必须将AJAXing错误,因为发明AJAX是为了解决与你的问题完全相同的问题。