这次给大家带来ajax+php的数据交互实现,ajax+php数据交互实现的注意事项有哪些,下面就是实战案例,一起来看一下。
php是一种创建动态交互性站点的服务器端脚本语言,优势:php脚本语言应用广泛,开源免费,最重要的是入门简单,容易掌握。
php能够生成动态页面内容
php能够创建、打开、读取、写入、删除以及关闭服务器上的文件
php能够接收表单数据
php能够发送并取回cookies
php能够添加、删除、修改数据库中的数据
php能够限制用户访问网站中的某些页面
能够运行于各种平台,几乎兼容所有web服务器,支持多种数据库
1.我们想要运行php,首先要有个web服务器,一般可以在本地部署一个服务器用来测试。所以需要下载个xampp,我们在百度搜索apache friends,直接打开第一个链接,然后毫不犹豫的下载最新版本(php7.0.9),下载后执行安装。
2.
2.现在来配置xampp来部署一个本地服务器,打开只需要启用apache服务,下面我就启动成功了。如果启用不成功,port(s)没有数据显示,就证明你监听的pc端口被占用,你可以在config的里第一个选项进行监听端口的更改,找到记事本里的listen 8080命令改后缀,这里我把监听端口改成空闲的8080了。
3.下面来打开dreamweaver建一个服务器站点。站点配置:本地站点文件夹一定要选择你装xampp路径的htdocs的目录里。
4.添加服务器配置:
这样站点就设置好了,然后在站点文件夹创建server.php,脚本如下
<?php
//设置页面内容是html编码格式是utf-8
//header("content-type: text/plain;charset=utf-8");
header('access-control-allow-origin:*');
header('access-control-allow-methods:post,get');
header('access-control-allow-credentials:true');
header("content-type: application/json;charset=utf-8");
//header("content-type: text/xml;charset=utf-8");
//header("content-type: text/html;charset=utf-8");
//header("content-type: application/javascript;charset=utf-8");
//定义一个多维数组,包含员工的信息,每条员工信息为一个数组
$staff = array
(
array("name" => 乔布斯, number => 101, sex => 男, job => ios开发工程师),
array(name => 比尔盖茨, number => 102, sex => 男, job => 微软开发工程师),
array(name => 陈美丽, number => 103, sex => 女, job => 安卓开发工程师),
array(name => 黄力, number => 104, sex => 男, job => java开发工程师),
array(name => 车神, number => 105, sex => 男, job => 游戏开发工程师),
array(name => 测试猫, number => 106, sex => 男, job => web前端开发工程师)
);
//判断如果是get请求,则进行搜索;如果是post请求,则进行新建
//$_server是一个超全局变量,在一个脚本的全部作用域中都可用,不用使用global关键字
//$_server[request_method]返回访问页面使用的请求方法
if ($_server[request_method] == get) {
search();
} elseif ($_server[request_method] == post){
create();
}
//通过员工编号搜索员工
function search(){
//检查是否有员工编号的参数
//isset检测变量是否设置;empty判断值为否为空
//超全局变量 $_get 和 $_post 用于收集表单数据
if (!isset($_get[number]) || empty($_get[number])) {
echo '{success:false,msg:参数错误}';
return;
}
//函数之外声明的变量拥有 global 作用域,只能在函数以外进行访问。
//global 关键词用于访问函数内的全局变量
global $staff;
//获取number参数
$number = $_get[number];
$result = '{success:false,msg:没有找到员工。}';
//遍历$staff多维数组,查找key值为number的员工是否存在,如果存在,则修改返回结果
foreach ($staff as $value) {
if ($value[number] == $number) {
$result = '{success:true,msg:找到员工:员工编号:' . $value[number] .
',员工姓名:' . $value[name] .
',员工性别:' . $value[sex] .
',员工职位:' . $value[job] . '}';
break;
}
}
echo $result;
}
//创建员工
function create(){
//判断信息是否填写完全
if (!isset($_post[name]) || empty($_post[name])
|| !isset($_post[number]) || empty($_post[number])
|| !isset($_post[sex]) || empty($_post[sex])
|| !isset($_post[job]) || empty($_post[job])) {
echo '{success:false,msg:参数错误,员工信息填写不全}';
return;
}
//todo: 获取post表单数据并保存到数据库
//提示保存成功
echo '{success:true,msg:员工:' . $_post[name] . ' 信息保存成功!}';
}
?>
我们可以在server.php文件数组$staff里的数据进行查询,并且可以实现添加数据的功能,下面来创建demo.html
<style>
body,input,button,select,h1{
font-size:20px;
line-height:18px;
}
</style>
<script>
window.onload=function(){
document.getelementbyid(search).onclick=function(){//查询数据
//发送ajax查询请求并处理
var request=new xmlhttprequest();
//open(方法(get查询,post添加),打开的文件数据,处理方式(同步为false异步为true,不填默认为true));
request.open(get,server.php?number=+document.getelementbyid('keyword').value);
request.send();
request.onreadystatechange=function(){
if(request.readystate===4){//当服务器请求完成
if(request.status===200){//status==200为服务器请求成功
var data=json.parse(request.responsetext);
if(data.success){//数据填写符合要求
document.getelementbyid('searchresult').innerhtml=data.msg;
}else{//数据填写不符号要求
document.getelementbyid('searchresult').innerhtml=出现错误:+data.msg;
}
}else{//服务器请求失败
alert(发生错误:+request.status);
}
}
}
}
document.getelementbyid(save).onclick=function(){//添加数据
//发送ajax添加数据请求并处理
var request=new xmlhttprequest();
//open(方法(get查询,post添加),打开的文件数据,处理方式(同步为false异步为true,不填默认为true));;
request.open(post,server.php);
//定义data取得用户所填写的数据,并且send(data)到服务器
var data=name=+document.getelementbyid(staffname).value
+&number=+document.getelementbyid(staffnumber).value
+&sex=+document.getelementbyid(staffsex).value
+&job=+document.getelementbyid(staffjob).value;
request.setrequestheader(content-type,application/x-www-form-urlencoded);//在post方法里必写,否则添加数据不起作用
request.send(data);
request.onreadystatechange=function(){
if(request.readystate===4){//当服务器请求完成
if(request.status===200){//status==200为服务器请求成功
var data=json.parse(request.responsetext);
if(data.success){//数据填写符合要求
document.getelementbyid('createresult').innerhtml=data.msg;
}else{//数据填写不符合要求
document.getelementbyid('createresult').innerhtml=出现错误:+data.msg;
}
}else{//服务器请求失败
alert(发生错误:+request.status);
}
}
}
}
}
</script>
<body>
<h1>员工查询</h1>
<label>请输入员工编号:</label>
<input type="text" id="keyword"/>
<button id="search">查询</button>
<p id="searchresult"></p>
<h1>员工创建</h1>
<label>请输入员工姓名:</label>
<input type="text" id="staffname"/><br>
<label>请输入员工编号:</label>
<input type="text" id="staffnumber"/><br>
<label>请输入员工性别:</label>
<select id="staffsex">
<option>男</option>
<option>女</option>
</select><br>
<label>请输入员工职位:</label>
<input type="text" id="staffjob"/><br>
<button id="save">保存</button>
<p id="createresult"></p>
</body>
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
怎样使用原生的ajax处理json数据
数据库+ajax方法如何实现地图界面
以上就是ajax+php的数据交互实现的详细内容。