PHP 之前后端交互
今天想实现一个很简单的功能,前端上面一个按键去控制 板子里面的一个LED灯,就这么一个简单的问题,困扰了一天。
以前搞底层的时候,没有服务端和客户端的深刻概念,网页不同,分在客户端运行的 html 代码,以及在服务端运行php, 等代码。
这里面涉及前后端交互的一个概念。
今天大致记录这个功能是怎么实现的。
这是前端显示代码
<h2 id="hardware-operation">Hardware Operation</h2>
<script>
function gpio_on()
{
var str="GPIO29_ON";
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
xmlhttp=new XMLHttpRequest();
}
else
{
//IE6, IE5 浏览器执行的代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gpio_operation.php?q="+str, true);
xmlhttp.send();
}
function gpio_off()
{
var str="GPIO29_OFF";
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
xmlhttp=new XMLHttpRequest();
}
else
{
//IE6, IE5 浏览器执行的代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gpio_operation.php?q="+str, true); // 这里的 q 是传入的参数
xmlhttp.send();
}
</script>
<div>
<style>
td {
text-align: center;
}
</style>
<table width="100%" border="1" align="center" >
<tr>
<th scope="col">Index</th>
<th scope="col">Name</th>
<th scope="col">ON</th>
<th scope="col">OFF</th>
</tr>
<?php
foreach ($MiniOS->configs["hardware_operation"] as $key => $value) {
echo "<tr>";
echo "<th socpe='row'>".$value["index"]."</th>";
echo "<td>".$key."</td>";
echo "<td>";
echo '<button onclick="gpio_on()">'.'gpio_on'.'</button>'; // 按钮,调用 gpio_on()
echo "</td>";
echo "<td>";
echo '<button onclick="gpio_off()">'.'gpio_off'.'</button>'; // 按钮, 调用 gpio_off
echo "</td>";
echo "</tr>";
}
?>
</table>
<div>
gpio_operation.php 代码
<?php
// 获取传入的参数
$q=$_GET["q"];
function gpio29_on()
{
$cmd1 = "echo 29 > /sys/class/gpio/export";
$cmd2 = "echo out > /sys/class/gpio/gpio29/direction";
$cmd3 = "echo 1 > /sys/class/gpio/gpio29/value ";
exec($cmd1);
exec($cmd2);
exec($cmd3);
}
function gpio29_off()
{
$cmd1 = "echo 0 > /sys/class/gpio/gpio29/value ";
$cmd2 = "echo 29 > /sys/class/gpio/unexport";
exec($cmd1);
exec($cmd2);
}
if ($q == "GPIO29_ON")
{
gpio29_on();
}
else if ($q == "GPIO29_OFF")
{
gpio29_off();
}
?>
PHP 之前后端交互的更多相关文章
- 窗口 - dialog - 与后端交互
与后端交互,一般需要提交表单数据,所以,这次渲染得dialog其实是一个<form> <form id="loginForm"> <table ali ...
- Node之简单的前后端交互
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...
- Django之META与前后端交互
Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...
- 前后端交互实现(nginx,json,以及datatable的问题相关)
1.同源问题解决 首先,在同一个域下搭建网络域名访问,需要nginx软件,下载之后修改部分配置 然后再终端下cmd nginx.exe命令,或者打开nginx.exe文件,会运行nginx一闪而过, ...
- springboot+mybatis+thymeleaf项目搭建及前后端交互
前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...
- 百度ueditor的图片上传,前后端交互使用
百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...
- SSM-网站后台管理系统制作(4)---Ajax前后端交互
前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...
- Django之前后端交互使用ajax的方式
1. 在项目中前后端数据相互是一种常态, 前后端交互使用的是ajax请求和form表单的请求两种方式" ajax与form表单的区别在于: form 是整个页面刷新提交的, 但是ajax ...
- 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)
这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...
- thinkphp+jquery+ajax前后端交互注册验证
thinkphp+jquery+ajax前后端交互注册验证,界面如下 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...
随机推荐
- ASP.NET 对字符串大小写切换
来源:http://www.codeproject.com/Tips/297011/How-to-Toggle-String-Case-in-NET#alternative22 使用LINQ: pub ...
- python核心编程--笔记(不定时跟新)(转)
的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v ...
- python标准库介绍——4 string模块详解
==string 模块== ``string`` 模块提供了一些用于处理字符串类型的函数, 如 [Example 1-51 #eg-1-51] 所示. ====Example 1-51. 使用 str ...
- vue开发环境搭建win10
需要安装nodejs, webpack@2.2.1, babel-cli, vue-cli 1 安装nodejs 现在版本默认会安装nodejs 和 npm包 和 配置环境 2 检查是否安装成功,在 ...
- 深入理解 Session 与 Cookie
Session 与 Cookie 的作用都是为了保持访问用户与后端服务器的交互状态.它们有各自的优点,也有各自的缺陷,然而具有讽刺意味的是它们的优点和它们的使用场景又是矛盾的.例如,使用 Cookie ...
- 在为shader program pass uniform之前一定要先use program。
在为shader program pass uniform之前一定要先use program.
- enumerate的简单使用
l = [11,22,33,55,"ss","zz"] for i,v in enumerate(l): print(i,v) #打印结果: # 0 11 # ...
- java Webservice(一)HttpClient使用(二)
HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java.net 包中已经提供了 ...
- <二>读<<大话设计模式>>之策略模式
又和大家见面了.可以坚持写出第二篇文章真不错,好好加油. <<大话设计模式>>解说策略模式是以商场收银软件程序开头的,那么问题来了.哪家商场收银软件强,开玩笑了. 读过上篇文章 ...
- cscope使用技巧
1.执着cscope.files文件,对源码目前全文件搜索 find `pwd` -type f > cscope.files `pwd`生成当前目录的绝对路径,这样在cs命令里面就可以不用写那 ...