U.A.Request向PHP发送请求
上一节课我们讲了使用PHP链接mysql数据库,从上一节课的内容中,我们发现上一节的代码是不能通过的,只能解决单个对数据库的操作。这节课我们封装上节课的PHP代码,并且使用UFORM框架的ajax函数U.A.Request函数向PHP发送请求并且执行相对应的数据库存储过程,从而达到可复用的代码。
接下来,我们在集成环境的目录中的WWW文件夹下新建一个request.php文件,新建完成后使用编辑器打开。在编辑器下敲入以下代码:
代码:
<?php
//判断是否有POST一个mode参数过来
if (isset($_REQUEST['mode'])) {
$ary = explode(",",$_REQUEST['mode']);//获取前台传过来的参数,以逗号的形式分割成数组
//建立连接
$m=mysqli_connect('*****','*****','*****',"UseStudio_PhpClass",'14062');
//判断如果数据库连接不成功
if ($m->connect_error) {
//返回错误,结束运行,退出脚本。
echo json_encode(Array("Error" => $m->connect_errno . " - " . $m->connect_error));
return;
}
//设置字符集
$m->set_charset('utf8');
//定义存储过程名
$sqlname = urldecode(urldecode($ary[0]));
//只有两个参数的时候,就是参数中,只有数据库名和存储过程名
if(count($ary)==1){
//调用存储过程
$sql = 'CALL '.$sqlname.'();';
}
//echo urldecode(urldecode($ary[1]));
else{
//如果多参数,进行拼接。
$sql = 'CALL '. $sqlname.'(';
for($i=1;$iset_charset('utf8');
//执行存储过程语句
$res = $m->query($sql);
//判断返回值的类型是否是布尔型,如果是布尔型,返回字符串"true";
if(gettype($res)=="boolean"){
echo "true";
}
//如果是object类型,则是代表有返回值,对方返回值进行处理。
else if(gettype($res)=="object"){
//存储过程如果执行成功了,把结果集获取了,以JSON的格式打印出来!以便前台调用
$all_rows = array(); //定义一个数组,用于存放结果集
//while循环结果集
while($row =$res->fetch_array(MYSQLI_ASSOC)){
//把结果集放入到数据中
array_push($all_rows, $row);
}
//把结果集以json的格式输出,以便前台调用!
echo json_encode($all_rows);
}
//关闭数据库连接
mysqli_close($m);
}
else {
echo json_encode(Array("Error" => "mode not exist"));
}
?>
结果:
接下来,我们在集成环境的目录中的WWW文件夹下新建一个request.html文件,新建完成后使用编辑器打开。在编辑器下敲入以下代码
代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://www.1473.cn/uform.js"></script>
</head>
<body>
</body>
</html>
<script>
window.onload = function () {
U.A.Request("http://127.0.0.1:8081/Phpclass/request.php", ["cxs_SelectAllUser"], function (r) {
console.log(r.value);
});
}
</script>
接着,我们在浏览器输入地址,打开我们的刚刚新建的request.html页面,打开F12控制台。在控制台上可以看到有一串json数据的。这样我们就完成了对PHP链接数据库的封装。
工作人员
作者:蔡旭升
信息录入:蔡旭升
视频录制:方嘉威
视频编辑:方嘉威